途中でさまざまなサーバーに展開される WCF アプリケーションに取り組んでおり、展開するたびに app.config を変更することを忘れないようにしたいと考えています。最初、私の app.config serviceModel セクションは次のようになりました。
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" />
<behaviors>
<serviceBehaviors>
<behavior name="MyDefaultServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8888/MyService" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MyDefaultServiceBehavior" name="MyService">
<endpoint address="net.tcp://localhost:9001/MyService" binding="netTcpBinding" contract="IMyService" name="NetTcpBinding_IMyService" />
</service>
</services>
これは、ローカル マシンで実行されているサービスにアクセスしていたときの開発では問題なく機能します。私がデプロイしたとき、WSDL にはまだ localhost を指している絶対パスが含まれていました。
<xsd:import schemaLocation=http://localhost:8888/MyService?xsd=xsd0 namespace="http://tempuri.org/" />
したがって、次のように app.config の httpGetUrl を変更できます。
<serviceMetadata httpGetEnabled="true" httpGetUrl=http://devserver1:8888/MyService />
そして今、wsdl はそのサーバー上で正しく動作します。問題は、デプロイされる各 app.config でアドレスを手動で設定する必要があることです。
次のいずれかの方法はあり
ますか?
または
2. wsdl import ステートメントで相対パスを使用しますか?
または、他の提案をいただければ幸いです。この wsdl の問題がなければ、デプロイが自動化される 2 つの開発サーバーがあります。
これはプロキシを生成するためだけのものなので、自分でプロキシを生成して配布することもできると思いますが、プロキシはユーザー自身に生成させたいと思います。
ありがとう!ダニエル