2012-12-21 23 views
5

Chúng tôi có một trang web ASP.Net kết nối với một dịch vụ web bên ngoài, và nó đột ngột ngừng hoạt động cách đây vài ngày.Điều gì có thể gây ra lỗi này trên một máy chủ, nhưng không phải lỗi khác?

Mã cơ bản là thế này:

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 

Các System.Net.WebException được kích hoạt với một ngoại lệ SendFailure, và trả về ngăn xếp này dấu vết:

 
The underlying connection was closed: An unexpected error occurred on a send. - 
    at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request) 
    at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request) 
    at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) 
    at ExternalWebService.ProcessRequestService.processCommand(parameters) 

Khi tôi cố gắng để gỡ lỗi vấn đề này trên máy phát triển của tôi , nó hoạt động tốt và không có ngoại lệ xảy ra.

Không có bản cập nhật gần đây cho máy chủ web của chúng tôi và tôi có thể kết nối với dịch vụ wsdl từ máy chủ web bằng FireFox (tuy nhiên, tôi không thể kết nối với IE, nhưng có thể liên quan đến một vấn đề khác máy chủ web)

Tôi đã thử tất cả các độ phân giải được đăng cho Thông báo lỗi # 2 here, bao gồm thiết lập KeepAlive = FalseServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3, tuy nhiên không có cách nào xử lý sự cố.

webserver của chúng tôi đang chạy Windows Server 2003 và IIS6.0

Điều gì có thể gây ra lỗi này xảy ra trên một máy, nhưng không khác?

Edit: Dưới đây là những thông tin Trace:

 
System.Web.Services.Asmx Information: 0 : Calling XmlSerializer [Create XmlSerializer] 
    Method: System.Xml.Serialization.XmlSerializer#1669721556::FromMappings(System.Xml.Serialization.XmlMapping[]#4002219=[4], ExternalWebService.ProcessRequestService#93032588=ExternalWebService.ProcessRequestService) 
    Caller: System.Web.Services.Protocols.SoapClientType#42808772::.ctor(ExternalWebService.ProcessRequestService#93032588=ExternalWebService.ProcessRequestService) 
    ProcessId=2796 
    LogicalOperationStack= 
    ThreadId=14 
    DateTime=2012-12-21T17:02:39.2826250Z 
    Timestamp=61755143048799345 
System.Web.Services.Asmx Information: 0 : Return from XmlSerializer [Create XmlSerializer] 
    Caller: System.Web.Services.Protocols.SoapClientType#42808772::.ctor(ExternalWebService.ProcessRequestService#93032588=ExternalWebService.ProcessRequestService) 
    ProcessId=2796 
    LogicalOperationStack= 
    ThreadId=14 
    DateTime=2012-12-21T17:02:39.6576250Z 
    Timestamp=61755144323396760 
System.Web.Services.Asmx Information: 0 : Calling XmlSerializer [Write Request] 
    Method: Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer#1231684::Serialize(System.Xml.XmlTextWriter#8023888=.., System.Object[]#19695157=[40], (null), (null)) 
    Caller: ExternalWebService.ProcessRequestService#60553900::Serialize() 
    ProcessId=2796 
    LogicalOperationStack= 
    ThreadId=14 
    DateTime=2012-12-21T17:02:39.7357500Z 
    Timestamp=61755144598320131 
System.Web.Services.Asmx Information: 0 : Return from XmlSerializer [Write Request] 
    Caller: ExternalWebService.ProcessRequestService#60553900::Serialize() 
    ProcessId=2796 
    LogicalOperationStack= 
    ThreadId=14 
    DateTime=2012-12-21T17:02:39.7357500Z 
    Timestamp=61755144621621529 
System.Web.Services.Asmx Information: 0 : Calling WebRequest.GetResponse 
    Method: System.Net.HttpWebRequest#2800407::GetResponse() 
    Caller: ExternalWebService.ProcessRequestService#60553900::GetWebResponse() 
    ProcessId=2796 
    LogicalOperationStack= 
    ThreadId=14 
    DateTime=2012-12-21T17:02:39.7357500Z 
    Timestamp=61755144622114240 
+0

Điều gì sẽ hiển thị trong nhật ký theo dõi? –

+0

@BradChristie Tôi sẽ tìm các bản ghi theo dõi ở đâu? (Xin lỗi, phát triển web không thực sự là chuyên môn của tôi) – Rachel

+0

Dịch vụ web bên ngoài có yêu cầu SSL không? – Blachshma

Trả lời

3

Rõ ràng trong trường hợp cụ thể của tôi, đó là vì nhà cung cấp dịch vụ web đã tăng cường bảo mật của họ và máy chủ web của chúng tôi không có đúng thư viện cần thiết để giải mã kết nối.

đầu mối duy nhất của chúng tôi là một hệ thống đơn kiện nhập người xem với một ID của 36.874 và một nguồn Schannel một vài ngày trở lại vào cùng một ngày trang web của chúng tôi ngừng làm việc mà nói:

Một yêu cầu kết nối SSL là nhận được từ ứng dụng khách từ xa , nhưng không có bộ mã hóa nào được ứng dụng khách hỗ trợ được máy chủ hỗ trợ.Yêu cầu kết nối SSL không thành công.

Tuy nhiên nếu bạn đang tự khắc phục sự cố này, thì this link rất hữu ích vì nó đã đưa ra một số mô tả đơn giản về lỗi đã chỉ cho tôi đúng hướng, rằng vấn đề của tôi liên quan đến việc không thể kết nối với dịch vụ web.

Kết nối tiềm ẩn đã được đóng cửa: Một lỗi không mong muốn xảy ra trên gửi

Vấn đề này xảy ra khi máy tính khách hàng không có thể gửi một HTTP yêu cầu. Máy khách không thể gửi yêu cầu HTTP vì kết nối đã bị đóng hoặc không khả dụng. Tra cứu lỗi trong bài viết này http://support.microsoft.com/kb/915599.

và trang hỗ trợ Microsoft được liên kết cũng khá chi tiết về một số giải pháp khác nhau mà bạn có thể cố gắng khắc phục các nguyên nhân phổ biến nhất của sự cố này.

2

Chỉ cần một ý tưởng, không biết nếu đó là tốt nhất: điều tương tự đã xảy ra cách đây vài tháng trên một trong những máy chủ của chúng tôi, bởi vì một người nào đó (nhóm bảo mật?: /) đã thay đổi quyền ghi trên thư mục "% SYSTEMROOT% \ Temp". Kể từ khi hành động đó, XMLSerializer không thể tạo ra các lắp ráp tạm thời được sử dụng để serialize/deserialize.

Từ http://www.hanselman.com/blog/ChangingWhereXmlSerializerOutputsTemporaryAssemblies.aspx :

Khi sử dụng XmlSerializer từ ASP.NET có quyền vấn đề có thể có thể được giải quyết bằng cách cấp tài khoản người dùng đọc/ghi cho phép trên% SYSTEMROOT% \ Temp thư mục

Vì vậy, có lẽ bạn có thể kiểm tra xem tài khoản được sử dụng bởi hồ bơi ứng dụng của bạn có quyền ghi trên thư mục "% SYSTEMROOT% \ Temp" ...

Chúc may mắn ...

+0

Cảm ơn bạn đã đề xuất, tuy nhiên tôi đã kiểm tra quyền và dường như mọi người đều có quyền truy cập để ghi vào thư mục đó :) – Rachel

Các vấn đề liên quan