하나님 당신은 WCF를 좋아하지 않습니다.무시 무시한 WCF BAD 요청 400이기 때문에 여전히 maxReceivedMessageSize 65536
가능한 모든 스레드를 읽었지만 지금은 정말 고생하고 있습니다.
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BaseHttp"
maxBufferSize="4194304"
maxBufferPoolSize="4194304"
maxReceivedMessageSize="4194304" />
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="TaskServiceBehavior">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="TaskServiceBehavior" name="TaskService">
<endpoint
address="http://www.mysite.com/TableTaskService/TableTaskService.svc"
binding="basicHttpBinding" bindingConfiguration="BaseHttp"
contract="TableTaskService.ITableTaskService" />
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://www.mysite.com/TableTaskService/" />
</baseAddresses>
</host>
</service>
</services>
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://www.mysite.com/" />
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
</system.serviceModel>
가 지금은 메시지를 보내고이 기본 예외 (svclog 파일에서 톱을) 던져 : 여기
는 WCF 구성입니다수신 메시지의 최대 메시지 크기 할당량 (65536)이 을 초과했습니다. 할당량을 늘리려면 적절한 바인딩 요소에 MaxReceivedMessageSize 속성을 사용합니다.
이제는 분명히 4MB로 지정해야합니다.
는내 클라이언트 코드 :
TableTaskServiceClient client =
new TableTaskServiceClient(
new BasicHttpBinding { MaxBufferSize = 4194304,
MaxReceivedMessageSize = 4194304 },
new EndpointAddress(GetEndpointAddressString())
);
그러나 그것은 날이 65536 크기 오류가 발생합니다.
또한 클라이언트가 MaxReceivedMessageSize
을 서버와 동일한 값으로 설정해야합니까? 서버가 클라이언트가 아니라 길이를 결정하는 것은 논리적이라고 생각합니다.
또한이 경고 메시지가 표시됩니다 (즉, 무시되는 요소에 대한 정보가 없거나 누락 된 정보가 없음). basichttpbinding은 정확히 재정의 된 내용입니다. 그런데 왜 그랬을까요? 어쨌든 :
는 [TraceRecord] 심각도 경고 TraceIdentifier http://msdn.microsoft.com/en-US/library/System.ServiceModel.OverridingDuplicateConfigurationKey.aspx 설명 구성 시스템은 다른 구성의 범위가 중복 키를 감지하고 최근 값으로 오버라이드한다. 응용 프로그램 도메인/LM/W3SVC/11/ROOT/TableTaskService - 33-1296567 소스 System.ServiceModel.Configuration.ServiceBehaviorElementCollection/-851144413 ElementName을 동작 0
NewElementLineNumber 0 OldElementLineNumber는 UPDTE : 서비스와 클라이언트 모두를 다시 구성 :
TableTaskServiceClient client = new TableTaskServiceClient(
new BasicHttpBinding {
MaxBufferSize = 4194304,
MaxReceivedMessageSize = 4194304,
MaxBufferPoolSize=4194304,
ReaderQuotas = new XmlDictionaryReaderQuotas
{
MaxArrayLength = 4194304,
MaxBytesPerRead = 4194304,
MaxDepth = 4194304,
MaxNameTableCharCount = 4194304,
MaxStringContentLength = 4194304
}
}, new EndpointAddress(GetEndpointAddressString()));
같은 오류가 계속 발생합니다.
그게 내가이 시도 467,000의 바이트 [] 배열 ~ 길이
같은 오류가 발생했습니다. 이 구성이 서비스 구성 (BaseHttp1로 변경됨, 오류가보고 됨, 다시 변경됨, 서비스가 브라우저에서 정상적으로 작동 함)에 사용되었음을 몇 번 확인했지만 여전히 동일합니다. 나는 그것이 일해야한다고 생각한다.. 그러나 그것은 단지하지 않는다. –
서비스와 클라이언트를 모두 구성하고 있습니까? 왜냐하면 클라이언트 쪽에서 모자 세팅이있을 것 같은데. –
예는 두 위치를 모두 재구성했습니다. –