【问题标题】:What can cause this error on one server, but not another?什么会在一台服务器上导致此错误,而在另一台服务器上不会?
【发布时间】:2012-12-21 16:27:13
【问题描述】:

我们有一个 ASP.Net 网站,它连接到外部 Web 服务,几天前它突然停止工作。

基本代码是这样的:

Try
    request = New ExternalWebService.ProcessRequestService

    ' Error occurs here:
    response = request.processCommand(parameters)

    ' Do some other stuff with response here

Catch webEx As System.Net.WebException

    ' This triggers and generic error gets displayed

Catch ex As Exception

Finally

End Try

System.Net.WebExceptionSendFailure 异常触发,并返回此堆栈跟踪:

底层连接已关闭:发送时发生意外错误。 - 在 System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest 请求) 在 System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest 请求) 在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(字符串方法名,对象 [] 参数) 在 ExternalWebService.ProcessRequestService.processCommand(参数)

当我尝试在我的开发机器上调试这个问题时,它工作正常并且没有发生异常。

我们的网络服务器最近没有更新,我可以使用 FireFox 从网络服务器连接到 wsdl 服务(但是我无法连接到 IE,但这可能与我们在网络上使用 IE 时遇到的另一个问题有关服务器)

我已经尝试了针对错误消息 #2 here 发布的所有解决方案,包括设置 KeepAlive = FalseServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3,但都没有解决问题。

我们的网络服务器运行的是 Windows Server 2003 和 IIS6.0

什么会导致此错误发生在一台机器上,而不是另一台机器上?

编辑:这是跟踪信息:

System.Web.Services.Asmx 信息:0:调用 XmlSerializer [创建 XmlSerializer] 方法:System.Xml.Serialization.XmlSerializer#1669721556::FromMappings(System.Xml.Serialization.XmlMapping[]#4002219=[4], ExternalWebService.ProcessRequestService#93032588=ExternalWebService.ProcessRequestService) 调用者:System.Web.Services.Protocols.SoapClientType#42808772::.ctor(ExternalWebService.ProcessRequestService#93032588=ExternalWebService.ProcessRequestService) 进程 ID=2796 逻辑操作栈= 线程 ID=14 日期时间=2012-12-21T17:02:39.2826250Z 时间戳=61755143048799345 System.Web.Services.Asmx 信息:0:从 XmlSerializer 返回 [创建 XmlSerializer] 调用者:System.Web.Services.Protocols.SoapClientType#42808772::.ctor(ExternalWebService.ProcessRequestService#93032588=ExternalWebService.ProcessRequestService) 进程 ID=2796 逻辑操作栈= 线程 ID=14 日期时间=2012-12-21T17:02:39.6576250Z 时间戳=61755144323396760 System.Web.Services.Asmx 信息:0:调用 XmlSerializer [写入请求] 方法:Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer#1231684::Serialize(System.Xml.XmlTextWriter#8023888=.., System.Object[]#19695157=[40], (null), (null)) 调用者:ExternalWebService.ProcessRequestService#60553900::Serialize() 进程 ID=2796 逻辑操作栈= 线程 ID=14 日期时间=2012-12-21T17:02:39.7357500Z 时间戳=61755144598320131 System.Web.Services.Asmx 信息:0:从 XmlSerializer 返回 [Write Request] 调用者:ExternalWebService.ProcessRequestService#60553900::Serialize() 进程 ID=2796 逻辑操作栈= 线程 ID=14 日期时间=2012-12-21T17:02:39.7357500Z 时间戳=61755144621621529 System.Web.Services.Asmx 信息:0:调用 WebRequest.GetResponse 方法:System.Net.HttpWebRequest#2800407::GetResponse() 调用方:ExternalWebService.ProcessRequestService#60553900::GetWebResponse() 进程 ID=2796 逻辑操作栈= 线程 ID=14 日期时间=2012-12-21T17:02:39.7357500Z 时间戳=61755144622114240

【问题讨论】:

  • 跟踪日志中显示了什么?
  • @BradChristie 我在哪里可以找到跟踪日志? (抱歉,Web 开发并不是我的专长)
  • 外部 Web 服务是否需要 SSL?
  • @Blachshma 是的,它是一个 https 网络服务

标签: asp.net vb.net web-services


【解决方案1】:

显然在我的特殊情况下,这是因为网络服务供应商提高了安全性,而我们的网络服务器没有正确的库来解密连接。

我们唯一的线索是一个 ID 为 36874 的系统事件查看器条目,以及几天前我们网站停止工作的同一天的 Schannel 来源:

从远程客户端收到 SSL 连接请求 应用程序,但客户端不支持任何密码套件 服务器支持应用程序。 SSL 连接请求 失败了。

但是,如果您自己调试此问题,this link 非常有用,因为它对错误进行了一些简化的描述,为我指明了正确的方向,我的问题与无法连接到他们的网络有关服务。

底层连接已关闭:发送时发生意外错误

当客户端计算机无法发送 HTTP 时会出现此问题 要求。客户端计算机无法发送 HTTP 请求,因为 连接已关闭或不可用。在中查找错误 本文http://support.microsoft.com/kb/915599.

链接的 Microsoft 支持页面也相当详细地介绍了一些不同的解决方案,您可以尝试解决此问题的最常见原因。

【讨论】:

    【解决方案2】:

    只是一个想法,不知道是不是好:几个月前在我们的一台服务器上发生了同样的事情,因为有人(安全团队?:/)更改了“%SYSTEMROOT%\”的写入权限临时”文件夹。由于该操作,XMLSerializer 无法生成用于序列化/反序列化的临时程序集。

    来自http://www.hanselman.com/blog/ChangingWhereXmlSerializerOutputsTemporaryAssemblies.aspx

    从 ASP.NET 使用 XmlSerializer 时,存在权限问题 可以通过授予用户帐户读/写权限来解决 在 %SYSTEMROOT%\Temp 文件夹上

    所以也许您可以检查您的应用程序池使用的帐户是否对“%SYSTEMROOT%\Temp”文件夹具有写入权限...

    祝你好运……

    【讨论】:

    • 感谢您的建议,但我检查了权限,显然每个人都有权写入该文件夹:)
    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    相关资源
    最近更新 更多