我正在開發一個應用程序,該應用程序將根據用戶的位置連接到各種Web服務。在運行時更改Web服務URL
例如:
如果用戶在城市「A」,應用程序將連接到Web服務:「192.168.1.1:8010」,如果他去到城市「B」,將連接到「192.168.1.1:8020」,在城市「C」將是「192.168.1.1:8030」,依此類推。
IP地址始終相同,端口號發生了什麼變化。
簡單的事情吧?是的,但我找不到在運行時使其工作的方法!
當我在運行時更改Web服務的「URL」參數(myWS.Url)(「URL Behaivor == Dynamic」)時,服務器只返回null,將參數更改爲原始值,通信是恢復。
如果在編譯之前進行編譯,編譯到城市「A」,僅在城市「A」中編譯到城市「B」,僅在城市「B」中運行,那麼它也是同樣的事情。
該應用程序最初是爲使用VS2008和CF3.5的Windows CE 5.0開發的,但即使在VS2013中也是如此。 NET框架4.0和Windows 7的「問題」仍然發生。
有沒有人遇到過這個?
按照要求,這裏是我的代碼的一小部分:
WSR.WSR myWS = new WSR.WSR();
//WSR added as a Web Reference
if (City_A)
{
myWS.Url = "http://192.168.1.1:8010/WSR.apw";
}
else
{
myWS.Url = "http://192.168.1.1:8020/WSR.apw";
}
這個話題(What should be modified to change the URL of a web service in C#?)對我來說,因爲我說不行,當我改變了「URL中旨意的解決方案行爲「屬性沒有入口點是在我的app.config文件中創建的。
下面是app.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="TrocaWebService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
<system.serviceModel>
<bindings />
<client />
</system.serviceModel>
<userSettings>
<TrocaWebService.Properties.Settings>
<setting name="TrocaWebService_WSR_WSR" serializeAs="String">
<value>http://192.168.1.1:8010/WSR.apw</value>
</setting>
</TrocaWebService.Properties.Settings>
</userSettings>
</configuration>
你們是不是要命中80端口爲不同的端口重定向用戶基於什麼? – Guvante
端口是否動態? –
你有一些代碼可以幫助你發現問題嗎? – RobbieE