我正在研究將部署到各種服務器的WCF應用程序,我不想記得每次更改app.config時部署。起初,我的app.config serviceModel部分是這樣的:Asp.net自託管的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>
這正常發展,當我訪問我的本地機器上運行的服務。當我部署它的WSDL包含絕對路徑仍然指向爲localhost:
<xsd:import schemaLocation=http://localhost:8888/MyService?xsd=xsd0 namespace="http://tempuri.org/" />
所以,我可以改變httpGetUrl在App.config像這樣:
<serviceMetadata httpGetEnabled="true" httpGetUrl=http://devserver1:8888/MyService />
而且現在的WSDL作品正確地在該服務器上。問題是我必須在每個部署的app.config中手動設置地址。
有沒有辦法可以:
1.有沒有wsdl已經包含了一切,以便沒有進口?
或
2.在wsdl import語句中使用相對路徑?
或其他任何建議,將不勝感激。我有兩個部署自動化的開發服務器,如果只是它不適合這個wsdl問題。
由於這只是爲了生成代理,我想我可以生成代理並自行分發,但我寧願讓用戶自己生成代理。
謝謝! Daniel
這幾乎是我如何做到這一點。 – 2009-03-03 17:14:22