Coreservice StreamUploadClient.UploadBinaryContentメソッドを使用して画像をアップロードしているときに、次のエラーが発生します。 「リモートサーバーがエラーを返しました:(411)長さが必要です。」よろしくお願いします。
ありがとう、プラザンナ
コメント
- すぐに使えるコアサービスクライアントを使用していますか?または、自分で生成しましたか?
回答
HTTPステータス411(長さが必要)は通常、次の場合に発生します。 POSTを実行していますが、リクエストの本文のサイズ(つまり、保存するコンテンツの長さ)を指定していません。
コードを投稿しなかったため、できません。より具体的な提案をします。リクエストの実行に使用しているクラスのプロパティを確認します。たとえば、HttpWebRequest
オブジェクトを使用している場合は、アップロードするファイルのバイト数に設定する必要があるプロパティ。
回答
アプリケーションで、タイムアウトとmaxRequestLengthの増加を確認します。ここでは「サンプルweb.config
<system.webServer> <directoryBrowse enabled="true"/> <security> <requestFiltering> <requestLimits maxAllowedContentLength="4000000000" maxUrl="10999" maxQueryString="9999"/> </requestFiltering> </security> </system.webServer>
コメント
- ロバート、ありがとうございます。コンソールアプリケーションにapp.configを使用する場合、これらの設定についてどこに言及すればよいですか
- 追加していただければ幸いです。 IISでもこれらの設定を行うと、内部の詳細が処理されます
- こんにちは、ロバート、それでも問題は解決しません。streamUpload_basicHttpと以下の構成を使用しています< binding name = " streamUpload_basicHttp " maxReceivedMessageSize = " 2147483647 " maxBufferSize = " 2147483647 " transferMode = " StreamedRequest " messageEncoding = " Mtom " openTimeout = " 05:00:00 " sendTimeout = " 05:00:00 " receiveTimeout = " 05:00:00 " closeTimeout = " 05:00:00 " > <リーダークォータmaxArrayLength = " 2147483647 " maxBytesPerRead = " 2147483647 " maxDepth = " 2147483647 " maxNameTableCharCount = " 2147483647 " maxStringContentLength = " 2147483647 " / > < / binding >
回答
web / app設定ファイルでバインディング設定を設定する方法がわからない場合は、urコードに設定を追加することもできます。以下のコードを直接参照してください。
BasicHttpBinding basicHttpBinding = new BasicHttpBinding { MaxReceivedMessageSize = 10485760, ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas { MaxStringContentLength = 10485760, MaxArrayLength = 10485760 }, MessageEncoding = WSMessageEncoding.Mtom, Security = new BasicHttpSecurity { Mode = BasicHttpSecurityMode.None, } }; EndpointAddress remoteAddress = new EndpointAddress("http://domain paths/CoreService2011.svc/streamUpload_basicHttp"); StreamUploadClient client = new StreamUploadClient(basicHttpBinding, remoteAddress);