Yol boyunca çeşitli sunuculara dağıtılacak bir WCF uygulaması üzerinde çalışıyorum ve her yaptığımda app.config dosyasını değiştirmeyi hatırlamak zorunda kalmak istemiyorum. bir dağıtım. İlk başta, benim app.config ServiceModel bölümde bu benziyordu:Asp.net Kendini Barındırılan WCF Hizmeti Göreli yollarla 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>
benim yerel makinede çalışan hizmete erişme edildiğinde bu gelişmede çalışıyor. Yani
<xsd:import schemaLocation=http://localhost:8888/MyService?xsd=xsd0 namespace="http://tempuri.org/" />
, ben şöyle app.config httpGetUrl değiştirebilirsiniz:
<serviceMetadata httpGetEnabled="true" httpGetUrl=http://devserver1:8888/MyService />
Ve şimdi wsdl eserlerini bunu dağıtıldığında, WSDL mutlak hala localhost işaret yolları içeriyordu Bu sunucuda doğru şekilde. Sorun, dağıtılan her bir app.config dosyasında adresi manuel olarak ayarlamam gerektiğidir.
Aşağıdakilerin bir yolu var mı:
1. wsdl zaten hiçbir şey içermeyecek şekilde hiçbir şey içermediğinden mi?
veya
2. Wsdl içe aktarma ifadelerindeki göreli yolları kullanın? Ya da başka herhangi bir öneriyi takdir etmek isteriz. Bu wsdl sorunu için olmasaydı, dağıtımın otomatikleştirildiği iki geliştirme sunucum var.
Bu yalnızca proxy üretmek için olduğundan, proxy'yi oluşturup kendim dağıtabildiğimi varsayalım, ancak kullanıcıların proxy'yi kendilerinin oluşturmasına izin vermeyi tercih ediyorum.
Teşekkürler! Daniel
bunu nasıl yaptığımı oldukça fazla. –
Benim için daha büyük sorun, herkesin makine adını kullanarak sunucuya erişememesidir. Bazı insanlar için bile çözülmez. Çözümünüz benim soruma iyi bir cevaptır, ancak maalesef soruyu çok basitleştirdim ve sorunumu çözmedi. Çözüm için diğer yoruma bakın. – Daniel