나는 답을 찾을 수 없다는 당혹스러운 문제가 있습니다. WCF 서비스에 많은 양의 데이터를 업로드하려고하는데 큰 데이터 요청이 수락 된 후 64KB 제한 아래의 요청이 전송 될 때까지 첫 번째 및 후속 시도에서 413 오류를 반환합니다. 내 바인딩에서 maxReceivedMessageSize 및 maxStringContentLength 요소를 이미 확장했으며 초기 확장 요청이없는 경우 요청을 보낼 때이 문제를 수정합니다 (다른 오류 400이 반환되지 않으면 413이 반환되지 않음).WCF 서비스가 첫 번째로드시 413으로 응답합니다.
내 시스템은 IIS 7에서 실행되는 ASP.NET 3.5 응용 프로그램이며 WCF 서비스는 사용자 지정 바인딩, SOAP 메시지 및 클라이언트/서버 인증서를 사용합니다.
는 기본적으로 재생하기 위해 (2 개 서버에서 테스트)
가-
가
- IIS7 작업자 프로세스가
- 이 64킬로바이트보다 큰 요청 보내기 시작 다음과 같다 : (413) 오류
- 이보다 더 더 이상 요청을 보낼 반환 64킬로바이트는 : 64킬로바이트보다 413 오류
- 보내기 요청 적은 반환 :
- 이 64킬로바이트보다 큰 요청 보내기 200 유효한 비누 응답을 반환 : 200 유효한 비누 응답을 반환 더 이상 요청을 보낼 수 413 오류
- 반환이 이
- IIS7 작업자 프로세스가
- 이 64킬로바이트보다 큰 요청 보내기 시작하십시오 maxReceivedMessageSize 및 maxStringContentLength 요소는 다음을 증가하지 않는 경우
발생 64kb 초과 : 413 오류
- 요청 보내기 64KB 미만 : 200 및 유효한 비누 응답 보내기 64킬로바이트보다 큰 요청 : 400 오류
디버깅이 413 오류를 수신 할 때 서버가 정말 내 서비스를 초기화하지 않은 작은 요청이 온되면 초기화 제안하고 내 바인딩 규칙과 관심을 지불 반환 대량의 데이터를 허용합니다.
이것이 WCF 라이브러리 내부의 문제로 판단되며 업그레이드 할 수는 있지만 실제로는 옵션이 아니며 해결 방법이 필요합니다.
<system.web>
<httpRuntime maxRequestLength="65536" executionTimeout="1800"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="67108864" />
</requestFiltering>
</security>
</system.webServer>
<system.serviceModel>
<services>
<service behaviorConfiguration="ServiceTlsBehavior" name="ELSLookupServiceTLS">
<endpoint address="" binding="customBinding" bindingConfiguration="TlsBinding" contract="Lookup" />
</service>
</services>
<bindings>
<customBinding>
<binding name="TlsBinding" closeTimeout="00:04:00" openTimeout="00:12:00" receiveTimeout="00:15:00" sendTimeout="00:05:00">
<textMessageEncoding>
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
</textMessageEncoding>
<httpsTransport requireClientCertificate="true" maxReceivedMessageSize="6553600" maxBufferPoolSize="6553600" maxBufferSize="6553600" />
</binding>
</customBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceTlsBehavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="6553600"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
내 서비스 구현 :
어떻게 든기본 WCF의 최대받은 바이트 내 Web.config의에서 증가 어쩌면 문제의 서비스를 초기화 어떤 방법 또는 응용 프로그램 시작시의 라인을 따라 생각하고 있었다
[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
public class ELSLookupService : Lookup
{
//serivce call implemented here
}