我嘗試爲我的WCF服務創建代理。客戶端上的代理WCF嚮導
它創造了很酷。但只有小事讓我煩惱。
我想要它的事情有和IP地址作爲服務名稱。但真的有我的機器名稱。簡而言之
我http://mycomputer/blabla
各種現場發電
後,但我需要這樣的:http://93.48.56.74/blabla
其中93.48.56.74
是我的電腦的IP地址,我產生這個。
如何解決這個問題?
我嘗試爲我的WCF服務創建代理。客戶端上的代理WCF嚮導
它創造了很酷。但只有小事讓我煩惱。
我想要它的事情有和IP地址作爲服務名稱。但真的有我的機器名稱。簡而言之
我http://mycomputer/blabla
各種現場發電
後,但我需要這樣的:http://93.48.56.74/blabla
其中93.48.56.74
是我的電腦的IP地址,我產生這個。
如何解決這個問題?
它使用機器名稱的原因是因爲這是在生成的WSDL中公佈的地址。正如評論,你可以修改你的Web.config或App.config,它將使用IP地址。
這麼簡單的答案:) 或者,您可以更改WSDL。如果您使用.NET 4.0 *,則可以將 <useRequestHeadersForMetadataAddress>
行爲應用於您的服務配置。
添加行爲後,服務元數據將通告您用於檢索WSDL的同一端點地址。因此,如果您將服務參考添加到http://93.48.56.74/blabla,則生成的代理和配置應使用IP地址而不是主機名稱。
*:還有一個可用於.NET 3.5的修補程序:KB971842(不介意的修補程序的說明)
常規的方法是使用配置文件來配置你的客戶端,並指定服務器名稱或IP地址,因爲它符合您的需求。
但是從我能告訴你正在重新設計的服務調用定期重新配置/更新客戶端,在這種情況下,您的手動更改將被覆蓋。
在這種情況下,你有兩種方法:
最正確的方法是以編程方式進行初始化。具體取決於你的實現,但這裏是一個使用服務EchoService
的例子。它可能會被簡化;我有複製並從測試初始化粘貼,我需要運行主機。
public void SetUp()
{
// the service address
var baseAddress = new Uri("http://127.0.0.1:3123/");
host = new WebServiceHost(typeof(EchoService), baseAddress);
ServiceEndpoint sep = host.AddServiceEndpoint(typeof(IEchoService), new WebHttpBinding(), "");
sep.Behaviors.Add(new WebHttpBehavior());
echoFactory = new ChannelFactory<IEchoService>(new WebHttpBinding(), sep.Address);
echoFactory.Endpoint.Behaviors.Add(new WebHttpBehavior());
client = echoFactory.CreateChannel(sep.Address, baseAddress);
}
很有意思 – alerya 2011-05-20 05:19:40
在配置文件中搜索「mycomputer」,並用ip地址替換。 – faester 2011-05-18 07:20:26
在服務器端還是客戶端? – alerya 2011-05-18 07:28:12
我在配置文件中將我的機器名稱無處不在地改爲IP地址。但是在按下'Configure Service Reference ...'後,我遇到了同樣的問題。舒爾,每次更新後我都可以在全球進行更換。但它聞起來很難看。 – alerya 2011-05-18 07:31:29