途中でさまざまなサーバーにデプロイされるWCFアプリケーションで作業していますが、毎回app.configを変更する必要はありません配備Asp.net Self Hosted WCFサービス相対パスを持つWSDL
<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>
私は私のローカルマシン上で実行されているサービスにアクセスしたとき、これは、開発に正常に動作します:まず、私のapp.configのserviceModelセクションでは、このように見えました。私はそれを展開すると、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内のアドレスを手動で設定する必要があることです。
いずれかの方法がありますか:
1.インポートがないようにwsdlにすべてのものが含まれていますか?
または
2. wsdlインポートステートメントで相対パスを使用しますか?
他の提案があれば幸いです。私は、このwsdlの問題だけではない場合、展開が自動化される2つの開発サーバーを持っています。
これはプロキシを生成するためだけなので、私はプロキシを生成して自分で配布することができますが、ユーザーがプロキシを生成できるようにしたいと思います。
ありがとうございます! ダニエル
それは私がそれを行う方法はかなりです。 –
私にとって大きな問題は、誰もがマシン名を使ってサーバーにアクセスできるわけではないということです。いくつかの人々のために、それは解決さえしません。あなたのソリューションは私の質問に対する良い答えですが、残念ながら、私は問題をあまりに単純化し、私の問題を解決しません。ソリューションについては、他のコメントを参照してください。 – Daniel