[wcf] WCF 서비스에서 시간 초과 값 늘리기

WCF 서비스에서 기본 시간 초과를 1 분보다 크게 늘리려면 어떻게합니까?



답변

서버 쪽 또는 클라이언트 쪽을 언급하고 있습니까?

클라이언트 의 경우 바인딩 요소 의 sendTimeout 속성 을 조정하려고합니다 . 서비스 의 경우 바인딩 요소 의 receiveTimeout 속성 을 조정하려고합니다 .

<system.serviceModel>
  <bindings>
    <netTcpBinding>
      <binding name="longTimeoutBinding"
        receiveTimeout="00:10:00" sendTimeout="00:10:00">
        <security mode="None"/>
      </binding>
    </netTcpBinding>
  </bindings>

  <services>
    <service name="longTimeoutService"
      behaviorConfiguration="longTimeoutBehavior">
      <endpoint address="net.tcp://localhost/longtimeout/"
        binding="netTcpBinding" bindingConfiguration="longTimeoutBinding" />
    </service>
....

물론 원하는 엔드 포인트를 해당 바인딩에 매핑해야합니다.


답변

Visual Studio 2008의 도구 메뉴 (또는 올바른 WCF 항목이 설치된 경우 2005)에는 ‘WCF 서비스 구성 편집기’라는 옵션이 있습니다.

여기에서 클라이언트와 서비스 모두에 대한 바인딩 옵션을 변경할 수 있습니다. 이러한 옵션 중 하나는 시간 종료를위한 것입니다.


답변

다른 타임 아웃은 다른 것을 의미합니다. 클라이언트에서 작업 할 때 .. 대부분 SendTimeout을보고있을 것입니다.이 참조를 확인하십시오-훌륭하고 관련된 설명 :
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread / 84551e45-19a2-4d0d-bcc0-516a4041943d /


답변

두 가지 방법을 선택할 수 있습니다.

1) 클라이언트의 코드

public static void Main()
{
    Uri baseAddress = new Uri("http://localhost/MyServer/MyService");

    try
    {
        ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService));

        WSHttpBinding binding = new WSHttpBinding();
        binding.OpenTimeout = new TimeSpan(0, 10, 0);
        binding.CloseTimeout = new TimeSpan(0, 10, 0);
        binding.SendTimeout = new TimeSpan(0, 10, 0);
        binding.ReceiveTimeout = new TimeSpan(0, 10, 0);

        serviceHost.AddServiceEndpoint("ICalculator", binding, baseAddress);
        serviceHost.Open();

        // The service can now be accessed.
        Console.WriteLine("The service is ready.");
        Console.WriteLine("Press <ENTER> to terminate service.");
        Console.WriteLine();
        Console.ReadLine();

    }
    catch (CommunicationException ex)
    {
        // Handle exception ...
    }
}

2) 웹 서버에서 WebConfig로

<configuration>
  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding openTimeout="00:10:00"
                 closeTimeout="00:10:00"
                 sendTimeout="00:10:00"
                 receiveTimeout="00:10:00">
        </binding>
      </wsHttpBinding>
    </bindings>
  </system.serviceModel>

자세한 내용은 공식 문서를 참조하십시오

바인딩에서 시간 초과 값 구성

WSHttpBinding 클래스


답변

바인딩 시간 초과 ( Timespans에 있음) 외에도이 시간 이 필요할 수도 있습니다. 몇 초 안에 요

<system.web>
    <httpRuntime executionTimeout="600"/><!-- = 10 minutes -->


답변