2011-11-23 2 views
4

데이터 계약의 일부로 바이트 배열을 허용하는 WCF 서비스 작업이 있습니다. 이 서비스는 인터넷이 아닌 내부적으로 만 노출되며 10MB 바이트 배열을 허용하기 위해 할당량을 늘리고 싶습니다.IIS 7에서 호스팅되는 WCF 서비스 - 바인딩 구성 설정이 무시됩니다.

서비스는 IIS7에서 호스팅됩니다. 나는 기본 길이에 ​​걸쳐 바이트 배열을 보내려고하면, 다음과 같은 예외 메시지가 :

유형 MyService.ServiceContracts.Data의 객체를 직렬화 복원 오류가 발생했습니다. 최대 배열 길이 할당량 (16384)이 XML 데이터를 읽는 동안 초과되었습니다. XML 판독기를 만들 때 사용되는 XmlDictionaryReaderQuotas 개체의 MaxArrayLength 속성을 변경하여이 할당량을 늘린 일 수 있습니다. 1 호선, 위치 여기 22991.

구성입니다 :

<system.serviceModel> 
    <netTcpBinding> 
     <binding name="largeBinaryBinding" maxReceivedMessageSize="10001000" 
       maxBufferPoolSize="80008000" maxBufferSize="10001000" 
       receiveTimeout="00:01:00" openTimeout="00:01:00" 
       closeTimeout="00:01:00" sendTimeout="00:01:00"> 
      <readerQuotas maxArrayLength="10000000" /> 
     </binding> 
    </netTcpBinding> 

    <services> 
     <service name="MyService"> 
      <endpoint binding="netTcpBinding" 
         bindingConfiguration="largeBinaryBinding" 
         bindingNamespace="http://my.services.co.uk/MyService" 
         contract="Services.MyService.ServiceContracts.IMyService" /> 
     </service> 
    </services> 
</system.serviceModel> 

그래서 내 구성이 더 큰 메시지를 허용하지만 IIS이를 무시하는 것 -이를 중지하고 통해 큰 메시지를 허용 어떻게 ?

답변

9

다시 한 번 질문을 게시 한 후 답변을 발견합니다.

WAS를 사용할 때 구성 서비스 이름에 서비스의 전체 클래스 이름을 지정해야합니다. 따라서 위의 예에서는 MyService이라는 서비스 구현 클래스를 네임 스페이스 Services에 넣었습니다. 따라서 구성에서 나는 필요합니다

<service name="Services.MyService"> 
    ... 

그렇지 않으면 IIS는주의 깊게 만들어진 구성을 자동으로 무시합니다. 얼마나 편리한 지.

관련 문제