【问题标题】:Problem with accessing WCF service hosted on IIS from a Windows application从 Windows 应用程序访问托管在 IIS 上的 WCF 服务时出现问题
【发布时间】:2010-11-24 10:50:38
【问题描述】:

我使用 wsHttpBinding 创建了一个 WCF 服务,该服务使用 asp.net 成员资格提供程序进行身份验证。我可以成功地在服务器上托管服务。但我的问题是wiered。 (无论域如何,我都可以在浏览器中看到 .svc 和 wsdl 文件)我只能从我的机器或同一域中的任何其他机器使用该服务。如果我尝试通过应用程序(Windows 应用程序)从其他域访问服务。它给了我错误信息:-

“通信对象 System.ServiceModel.Channels.ServiceChannel 处于故障状态,无法用于通信”

堆栈跟踪: 服务器堆栈跟踪: 在 System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan 超时)

在 [0] 处重新抛出异常: 在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg) 在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 类型) 在 System.ServiceModel.ICommunicationObject.Close(时间跨度超时) 在 System.ServiceModel.ClientBase1.System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout) at System.ServiceModel.ClientBase1.Close() 在 System.ServiceModel.ClientBase`1.System.IDisposable.Dispose() 在 AOLICWindows.Forms.SynchronizeTest.btnRegistration_Click(Object sender, EventArgs e)

【问题讨论】:

    标签: wcf


    【解决方案1】:

    wsHttpBinding 默认使用 Windows 凭据进行身份验证,只要您在同一个域中,或者在具有完全信任关系的域中,就可以了。

    错误消息似乎指向超时 - 也许您需要调整这些。一旦您的服务器上发生未正确处理并变成 SOAP 故障的异常,那么通道(客户端和服务器之间的连接)就会“出现故障”,例如它进入错误状态,不能再使用。您所能做的就是中止通道(此时您甚至无法关闭它),然后从头开始重新创建它。

    或者这个超时可能是因为您将客户端代理的使用包装到了using(......) {......} 块中?这通常是个好主意 - 但在 WCF 客户端代理的情况下则不然。

    问题的出现是因为一旦通道发生故障,您甚至无法再关闭它。如果您将客户端代理使用包装到 using() 语句中,当服务器出现问题并且未正确处理时,通道将出现故障,并且在 using() 块结束时,.NET 运行时尝试关闭它,然后由于通道发生故障而引发另一个异常....

    所以对于 WCF 客户端,推荐的最佳做法是这样的:

    YourClientProxy proxy = new YourClientProxy();
    
    try
    {
       ... use it
    
       proxy.Close();
    }
    catch(TimeoutException exception)
    {
       proxy.Abort();
    }
    catch(CommunicationException exception)
    {
       proxy.Abort();
    }
    

    马克

    【讨论】:

    • 谢谢你,V 多马克。这有助于我找出实际问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2013-07-17
    • 2011-03-28
    相关资源
    最近更新 更多