在系统重新启动之前,Web 服务堆栈拒绝工作

发布于 2024-08-06 14:32:02 字数 900 浏览 0 评论 0原文

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

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

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

可能发生什么事?为什么我必须重新启动系统?


Response to @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 网络监视器来访问它,以确保最后一个数据包通过(尽管我怀疑这会浪费时间)。

I have the following scenario. My client application connects to a server side software via web services. I have no control over the server side software.

Every time the server side folks deploy a new version, my client app can't connect to it (via the web services... ping works fine) until the client system is rebooted (just restarting the app does not do the trick). Then everything works great like nothing happened.

I should mention that the server-side code is based on WCF, while the client app connects to it via the ASMX endpoint (as expressed by the Wsdl http://mycompany/services/v1_0/Default.svc?wsdl). The authentication from client to server is via Windows Authentication (NTLM).

What could be going on? Why do I have to reboot the system?


Response to @EugeneOs

Basically there are 3 communication sets in Fiddler:

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.

My next step is to hit it with the Microsoft Network Monitor just to make sure that the last packet got through (though I suspect, it'll be a waste of time).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

攒眉千度 2024-08-13 14:32:02

Web 服务堆栈不执行此操作。对不起。 ASMX 客户端中几乎没有任何堆栈。它没有做任何比 HttpWebRequest 更奇特的事情!这与服务器是 WCF 无关,因为 ASMX 对 WCF 不了解。对于您的 ASMX 客户端而言,它只是一个普通的 SOAP Web 服务。

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

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

The web services stack is not doing this. Sorry. There's hardly any stack at all in an ASMX client. It's not doing anything fancier than HttpWebRequest! This has nothing to do with the server being WCF, since ASMX doesn't know anything about WCF. It's just a plain SOAP web service as far as your ASMX client is concerned.

I'd check into proxy server issues, and I'd look at the network traffic both during the failure and during a success, to see what the difference is.

I might also try to create a dead-simple test client with nothing fancy in it in order to reproduce the problem in a simpler environment. That will rule out anything special that the real client program might be doing in terms of customizing the client proxy.

爱的故事 2024-08-13 14:32:02

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

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

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

What happens if you just browse to http://mycompany/services/v1%5F0/Default.svc or http://mycompany/services/v1%5F0/Default.svc?wsdl before the system is rebooted?

Is there anything added to the event log when you try to access the above URLs from the browser?

What errors do you get when you say it "can't connect"? Can you look at the response using Fiddler?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文