【问题标题】:The Web Services stack refuses to work until the system is rebootedWeb 服务堆栈拒绝工作,直到系统重新启动
【发布时间】:2009-10-01 21:54:35
【问题描述】:

我有以下情况。我的客户端应用程序通过 Web 服务连接到服务器端软件。我无法控制服务器端软件。

每次服务器端人员部署新版本时,我的客户端应用程序都无法连接到它(通过 Web 服务... ping 工作正常),直到客户端系统重新启动(仅重新启动应用程序不会诡计)。然后一切正常,就像什么都没发生一样。

我应该提到,服务器端代码基于 WCF,而客户端应用程序通过 ASMX 端点连接到它(由 Wsdl http://mycompany/services/v1_0/Default.svc?wsdl 表示)。从客户端到服务器的身份验证是通过 Windows 身份验证 (NTLM)。

会发生什么?为什么我必须重新启动系统?


回复@EugeneOs

Fiddler 中基本上有 3 个通信集:

IE:  Get /Default.svc HTTP 1.1
Response: 401.  Negotiate with NTLM

IE:  Get /Default.svc HTTP 1.1 - with NTLM token 
Response: 401.  Negotiate with NTLM specific token (token provided in the response)

IE:  Get /Default.svc HTTP 1.1 - with the token provided above 
Response: No Response whatsoever.

我的下一步是使用 Microsoft 网络监视器来检查它,以确保最后一个数据包通过(尽管我怀疑这会浪费时间)。

【问题讨论】:

    标签: c# wcf web-services wsdl asmx


    【解决方案1】:

    Web 服务堆栈没有这样做。对不起。 ASMX 客户端中几乎没有任何堆栈。它没有做任何比HttpWebRequest 更好的事情!这与服务器是 WCF 无关,因为 ASMX 对 WCF 一无所知。就您的 ASMX 客户端而言,它只是一个普通的 SOAP Web 服务。

    我会检查代理服务器问题,并查看失败和成功期间的网络流量,看看有什么区别。

    我也可能会尝试创建一个非常简单的测试客户端,其中没有任何花哨的东西,以便在更简单的环境中重现问题。这将排除真正的客户端程序可能在自定义客户端代理方面所做的任何特殊操作。

    【讨论】:

      【解决方案2】:

      如果您只是在系统重新启动之前浏览到http://mycompany/services/v1%5F0/Default.svchttp://mycompany/services/v1%5F0/Default.svc?wsdl 会发生什么?

      当您尝试从浏览器访问上述 URL 时,事件日志中是否添加了任何内容?

      当您说“无法连接”时会出现什么错误?你能用 Fiddler 看看响应吗?

      【讨论】:

      • 用 Fiddler 的东西更新了问题。这是我做的第一件事,但并没有让我更接近结论。
      猜你喜欢
      • 2022-12-04
      • 2010-10-09
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多