2008-09-16 14 views
2

私は、VS 2008にいくつかのWebサービスリファレンスを含むWPFアプリケーションを用意しています。様々な理由(最大のメッセージサイズ、認証方法)のために、私は手動でWPFクライアントのapp.configにいくつかの設定を定義してサービスバインディングを設定する必要があります。Visual StudioのbasicHttpBindingとエンドポイントの問題

残念ながら、これは、私がプロジェクト内のサービス参照を更新すると、複数のバインディングとエンドポイントが混乱することになります。 Visual Studioは、新しいサフィックスとエンドポイントを数値サフィックス(つまり、 "Service1"を "Service"の重複として使用)を作成します。その結果、無効な構成になります。

簡単な「Hello World」ASP.Net WebサービスとWPFアプリケーションをソリューションに作成し、app.configバインディングでmaxBufferSizeとmaxReceivedMessageSizeを変更し、サービス参照を更新します。

現時点では、参照を更新した後でapp.configのチェックアウトを単に元に戻して作業していますが、もっと良い方法が必要だと思っています。

はまた、我々は手動で変更する必要がある設定は次のとおりです。

<security mode="TransportCredentialOnly"> 
    <transport clientCredentialType="Ntlm" /> 
</security> 

と:これらの設定が何らかの形であろうと、プログラムで設定することができますので、もし

<binding maxBufferSize="655360" maxReceivedMessageSize="655360" /> 

我々はサービスファクトリクラスを使用しますプロパティは公開されていないように見えますが、

答えて

2

プロジェクトに適した設定を持つsvcutil(プロキシ生成用)を使用する.Batファイルを作成します。それはかなり簡単です。 batfileをクリックすると、インタフェースが変更されたときにいつでも新しいproxyfileを生成することができます。

バッチは、後で自動ビルドで使用できます。それでは、app.config(またはweb.config)を1回だけ設定する必要があります。 dev、test prodなどの異なる環境では、通常、異なる設定を分けています。

例(改行に注意):

REM generate meta data 
call "SVCUTIL.EXE" /t:metadata "MyProject.dll" /reference:"MyReference.dll" 

REM making sure the file is writable 
attrib -r "MyServiceProxy.cs" 

REM create new proxy file 
call "SVCUTIL.EXE" /t:code *.wsdl *.xsd /serializable /serializer:Auto /collectionType:System.Collections.Generic.List`1 /out:"MyServiceProxy.cs" /namespace:*,MY.Name.Space /reference:"MyReference.dll" 

:)

//

+0

ありがとうsuperwren - これは、トリックを行うかもしれないようです。 – Nathan

0

私はsvcutil.exeをVisual Studioの "サービス参照の追加"機能を使用するよりも直接使用する方が好きです。これは私たちのWCFプロジェクトで行っていることです。

0

私はあなたの意見を受け取ります.Svcutilは、サービス参照の追加と更新のより高度な方法です。 "右クリック、更新の参照"がちょうど1つのステップで作業するのに非常に近いので、ちょっとだけ手作業で作業するだけです。

参考コードを出力するためにバッチファイルなどを作成することもできます。それでも、手動でsvcutilを使ってサービスコードをチェックアウトして更新することは、おそらく設定のチェックアウトを元に戻すよりも多くの作業になります。

いずれにしても助言をいただきありがとうございます。

2

Wよりもむしろ生成されたエンドポイントを変更し、uouは、第2のエンドポイントを追加して定義を結合できあなたのコードでは、新しいエンドポイントの名前をサービス・クライアント・コンストラクターに入れてください。

0

私たちは、svcutil.exeユーティリティで自動生成されたapp.configファイルと* .csファイルをチェックアウトし(ソース管理から)、svcutil.exeを実行してサービスを取得するバッチファイルを実行しますメタデータ。それが終わったら、コードを再コンパイルして、動作していることを確認してから、更新されたapp.configと* .csファイルをチェックインしてください。Visual Studioでoft-buggy "Add Service Reference"を使用するよりも、

関連する問題