通过WP8在WCF中的通信异常

时间:2014-02-28 05:59:14

标签: c# web-services wcf windows-phone-8

我在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通常会发生变化。我一遍又一遍地寻找这个确切的问题而没有运气。任何帮助将不胜感激。

1 个答案:

答案 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(如果这是一个选项)。