我在IIS中的localhost上部署了一个简单的WCF服务。我能够在第一个窗口手机应用程序中访问它。但在连接到家中的其他Wifi网络后,我无法通过新的本地IP访问它。我试过重新发布服务。我也尝试在WP8应用程序中重新配置服务引用。添加引用时,添加服务向导会检测部署在新IP上的WCF服务(本地IP地址在笔记本电脑连接到其他网络后自然会发生变化)。但是,只要从设备调用简单的Authenticate函数,它就会显示异常。 Stackoverflow不会让我发布屏幕截图,因为声誉很低,但确切的异常消息是:
'System.ServiceModel.ni.dll中出现'System.ServiceModel.CommunicationException'类型的异常,但未在用户代码中处理' 附加信息:远程服务器返回错误:NotFound。
此参数在Reference.cs文件中通过以下函数的第二行发生:
public string EndAuthenticateCustomer(System.IAsyncResult result) {
object[] _args = new object[0];
string _result = ((string)(base.EndInvoke("AuthenticateCustomer", _args, result)));
return _result;
}
我在调试模式下运行应用程序。如果我在手机上运行已安装的应用程序并尝试访问该服务,那么它只会崩溃。这是我最后一年项目的一部分。因此,我将在大学和家庭工作,这意味着托管服务的本地IP通常会发生变化。我一遍又一遍地寻找这个确切的问题而没有运气。任何帮助将不胜感激。
答案 0 :(得分:1)
您仍需提供实例化服务的代码,但您可以在实例化时配置服务IP:
// at home
//const string ipAddress = "192.168.200.111";
// at school
const string ipAddress = "192.168.100.118";
string address = string.Format("http://{0}/MobileService/DataService.svc", ipAddress);
var mobileDataService = new MobileDataServiceClient(new MobileDataServiceClient.EndpointConfiguration(), new EndpointAddress(address));
您必须根据所在的网络更改IP。或者,您可以将其推送到具有常量IP的服务器,例如: Azure(如果这是一个选项)。