1

webService (System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse) 経由で大きなファイルを送信する際に問題があります。

ファイルが 20 MB より小さい場合はすべて正常に動作し、大きい場合は 404 コードで応答します。

例外情報

Exception Type: System.Net.WebException
Status: ProtocolError
Response: System.Net.HttpWebResponse
Message: The request failed with HTTP status 404: Not Found.
Data: System.Collections.ListDictionaryInternal
TargetSite: System.Object[] ReadResponse(System.Web.Services.Protocols.SoapClientMessage, System.Net.WebResponse, System.IO.Stream, Boolean)
HelpLink: NULL
Source: System.Web.Services

スタックトレース情報

   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at ie.osds.DocumentsTransferBLL.FSDMZRepositoryService.FileStreamingWebService.UploadScanning(DateTime DateCreated, String Title, String FileName, String ReferenceNumber, String Author, String DocumentType, XmlNode IndexData, Byte[] Content, Nullable`1 IsCompressed, Nullable`1 Version, DateTime DateReceived, String CreatedBy, String OrigDocumentGUID)
   at ie.osds.DocumentsTransferBLL.Actions.ActionsHelper.UploadDocumentToDMZFileStreaming(FileStreamingWebService fsDMZWebService, SPQDocument spqDocument, String documentReferenceNumber, String documentAuthor, String documentType, Byte[] documentContent, String version, DateTime dateReceived)
   at ie.osds.DocumentsTransferBLL.Actions.DocumentsUploadAction.Upload()*
4

2 に答える 2

0

ファイルのアップロードがタイムアウトしているようです:

global.asax でこのエラーをトラップして、これが事実であるかどうかを確認できます。

Protected Sub Application_EndRequest(ByVal sender As Object, ByVal e As System.EventArgs)

    Dim context As HttpContext = HttpContext.Current.ApplicationInstance.Context
    If Not IsNothing(context) Then

        If Not context.Response.StatusCode = HttpStatusCode.OK Then

            'Detect file upload exceeded max length:
            If context.Response.StatusCode = 404 And
                context.Response.SubStatusCode = 13 Then
                'clear the previous error page content:
                context.Response.Clear()
                'redirect to custom error page:
                context.Server.Transfer("~/error.aspx?code=404.13", False)
            End If

        End If

    End If
End Sub

次のように、web.config でリクエストの長さを増やすこともできます。

<system.web>
    <httpRuntime maxRequestLength="29296" />
</system.web>

注: 値はキロバイト単位です

于 2013-04-17T13:06:59.987 に答える
0

Web アプリケーションに Web サービス参照がある場合は、それを削除してから再構築し、Web サービスを実行してから、その Web サービス参照を Web アプリケーションに再度追加します。

于 2013-05-14T07:12:15.510 に答える