Ứng dụng được viết bằng ASP .NET 4.0 được lưu trữ trong IIS 7.5 trên máy chạy Windows Server 2008 R2. Hồ bơi ứng dụng đang sử dụng Chế độ đường ống được quản lý tích hợp.ASP.NET 4.0 Web App ném "Chức năng không đúng. (Ngoại lệ từ HRESULT: 0x80070001)"
Ngoại lệ bên dưới được ném khi trên một số trang khác nhau không có điểm chung rõ ràng. Tôi không thể tự mình tái tạo ngoại lệ, nhưng nó đã xảy ra 10 lần tuần trước trong môi trường sản xuất.
Từ dấu vết ngăn xếp Tôi thấy rằng ngoại lệ được ném bởi phương thức "HttpRequest.GetEntireRawContent" vì vậy tôi đã tự hỏi nếu có gì đó sai với yêu cầu, chẳng hạn như nó quá dài hoặc chứa ký tự không hợp lệ.
Chỉ cần rõ ràng, ngoại lệ này là không phải được ném từ mã mà tôi đã viết, nó nằm trong không gian tên System.Web. Vì vậy, tôi không thể thêm một thử ... bắt xung quanh nó.
Tôi rất vui vì bất kỳ ý tưởng nào về nguyên nhân của các bước ngoại lệ hoặc khắc phục sự cố để tìm hiểu thêm thông tin.
Exception: System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Web.HttpException (0x80004005): An error occurred while communicating with the remote host. The error code is 0x80070001. ---> System.Runtime.InteropServices.COMException (0x80070001): Incorrect function. (Exception from HRESULT: 0x80070001)
at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
at System.Web.Hosting.IIS7WorkerRequest.ReadEntityCoreSync(Byte[] buffer, Int32 offset, Int32 size)
at System.Web.HttpRequest.GetEntireRawContent()
at System.Web.HttpRequest.FillInFormCollection()
at System.Web.HttpRequest.get_Form()
at System.Web.HttpRequest.get_HasForm()
at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
at System.Web.UI.Page.DeterminePostBackMode()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.report_openinghours_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
EDIT:
Như đã chỉ ra bởi lukiffer có một câu hỏi tương tự ở đây: stackoverflow.com/questions/7825127/ Việc sửa chữa được đề xuất là để tắt TCP giảm tải, theo cách tôi hiểu nó được rằng TCP giảm tải che chắn cho máy chủ web từ rất nhiều sự phức tạp của TCP. Do đó tắt nó sẽ tiêu thụ rất nhiều chu kỳ CPU để làm chậm các máy chủ web, mà rõ ràng là không mong muốn.
Tôi cũng không hiểu lý do tại sao TCP offloading sẽ gây ra IIS để ném một ngoại lệ.
Xem: http: // stackoverflow.com/questions/7825127/system-runtime-interopservices-comexception-incorrect-function-exception-from – lukiffer
Bạn có thể đăng mã bên trong 'report_openinghours.aspx.cs' đang gọi dịch vụ/nguồn dữ liệu từ xa, bao gồm mọi lệnh gọi COM và đối tượng – Kane
Mã bên trong 'report_openinghours.aspx.cs' không gọi một dịch vụ/nguồn dữ liệu từ xa hoặc bất kỳ cuộc gọi hoặc đối tượng COM nào. Có vẻ như mã sử dụng đối tượng COM nằm trong lớp IIS7WorkerRequest. – user1069816