wcf2009. 7. 16. 18:35
계속 삽질을 했다....

왜 테스트 프로그램은 잘되는데 실제 프로젝트에 적용하면 안될까? 이런 고민을 했었다...

실제프로젝트 wcf서비스는 iis에서 돌고 있고

테스트는 콘솔 어플리케이션에서 서비스가 돌고 있었다...

이차이를 몰랐던것이다.

결국 이차이를 깨닫고 인터넷왜 찾아본결과

web.config에 

<system.web>
  <!--파일 업로드 크기-->
    <httpRuntime maxRequestLength="2090000" />
</system.web>

에서 iis에서 파일전송 제한을 늘려야했다


첨에는 wsHttpBinding 탓하고 별탓을 다했다.

결국 테스트 프로그램 서버는
   
      <!--wsHttpBinding 추가-->
      <wsHttpBinding>
        <binding name="FileTransferServicesBinding"          
          messageEncoding="Mtom"                 
          maxReceivedMessageSize="2067108864">
        </binding>
      </wsHttpBinding>
이렇게 구현하고

클라이언트는

indings>
      <wsHttpBinding>
        <binding name="Binding1" maxReceivedMessageSize="267108864" messageEncoding="Mtom" />
        <binding name="WSHttpBinding_IService" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
          maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Mtom"
          textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
            enabled="false" />
          <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
              algorithmSuite="Default" establishSecurityContext="true" />
          </security>
        </binding>
      </wsHttpBinding>

이렇게 구현하였다.

maxReceivedMessageSize 설정과   messageEncoding="Mtom"  이 관건이다.

파일전송 참고 사이트 






Posted by 동동(이재동)