【问题标题】:Can not connect to a WCF service from a Windows Mobile 6 emulator无法从 Windows Mobile 6 模拟器连接到 WCF 服务
【发布时间】:2014-04-28 11:24:24
【问题描述】:

我有一个 WCF 服务应用程序。以及 VS2008 中带有 .NET Framework 3.5 的 Windows Mobile 6 应用程序。

我使用各种 .NET 框架(3、4 等)创建了多个版本的 WCF 服务。在 VS2012 中。

我将它们托管在我的本地 IIS 7 下。我可以通过 WCF 测试客户端成功连接和运行服务方法。一切似乎都很好。

我使用“添加 -> Web 引用”添加服务(使用 localhost 和 127.0.0.1)并尝试从移动应用程序连接。

无论我使用哪个版本的服务,我都会不断收到以下错误

Exception   : System.Net.WebException
Message     : Unable to connect to the remote server.
Stack Trace : 
              at System.Net.HttpWebRequest.finishGetResponse()
              at System.Net.HttpWebRequest.GetResponse()
              at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
              at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
              at System.Web.Services.Protocols.SoapHttpClientProtocol.doInvoke(String methodName, Object[] parameters, WebClientAsyncResult asyncResult)
              at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
              at testWcfMobileClient.svc3.Service1.Test(Boolean& TestResult, Boolean& TestResultSpecified)
              at testWcfMobileClient.Form1.Form1_Load(Object sender, EventArgs e)
              at System.Windows.Forms.Form.OnLoad(EventArgs e)
              at System.Windows.Forms.Form._SetVisibleNotify(Boolean fVis)
              at System.Windows.Forms.Control.set_Visible(Boolean value)
              at System.Windows.Forms.Application.Run(Form fm)
              at testWcfMobileClient.Program.Main()

Inner Exception : 
Exception   : System.Net.Sockets.SocketException
Message     : No connection could be made because the target machine actively refused it
Stack Trace : 
              at System.Net.Sockets.Socket.ConnectNoCheck(EndPoint remoteEP)
              at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
              at System.Net.Connection.doConnect(IPEndPoint ep)
              at System.Net.Connection.connect(Object ignored)
              at System.Threading.ThreadPool.WorkItem.doWork(Object o)
              at System.Threading.Timer.ring()

我找不到解决问题的方法,感谢您提供任何帮助。

问候。

更新信息 (24.03.2014)

从那时起我一直在研究这个问题,我想提供更多信息。

我有两台服务器,分别是 SRV01 和 SRV02,它们也托管着其他几个网站。

我将我的服务应用程序部署到两台服务器,问题是:

SRV01按预期响应,没问题,确认模拟器网络设置没有问题。

但是 SRV02 仍然抛出相同的异常。这里尴尬的情况是 SRV02 还托管其他服务,目前运行顺利。

我正在比较 IIS 设置、应用程序设置、machine.config 文件和 web.config 文件,一切似乎都相同。

另外一件奇怪的事情是 SRV02 在我的建筑物和网络中,而 SRV01 是在同一个域中的远程。我可能应该更轻松地使用 SRV02,但目前情况正好相反。

【问题讨论】:

标签: web-services wcf windows-mobile


【解决方案1】:

“无法建立连接,因为目标机器主动拒绝了它”通常意味着无法通过端口设置访问目标。 首先检查端口设置。检查目标 IP 地址。检查防火墙。 (SQL) 服务器是否支持 TCP/IP?

验证您是否可以使用 ping 连接(例如使用 Cambridge vxUtils)。验证您在模拟器中是否有网络地址。

要在模拟器中获得 TCP/IP 连接,您必须拥有模拟网卡(这对于 Windows 8 来说很难工作,AFAIK 这是不可能的)或“停靠”模拟设备并将 WMDC 连接设置设置为“此计算机已连接到 Internet”并允许数据连接(称为 ActiveSync Passthru 连接)。模拟器通常不会对接您的模拟设备。 VS 使用 DMA 远程调试应用。

【讨论】:

  • 非常感谢您的回复,不幸的是,问题似乎不是模拟器的网络连接,而是服务器或某些配置本身。
【解决方案2】:

我终于在某个帖子中找到了答案,可惜我不记得地址了。

我所要做的就是将“localhost”替换为我电脑的 IP 地址。

尽管帖子中确实存在令人满意的解释,但据我所知,我找到了答案,原因是“localhost”指的是模拟器本身,应用程序应该将托管服务的机器指向另一台机器而不是模拟器本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多