0

wcf タイムアウトをテストするために、wcf サービスを作成しました。私の問題は、タイムアウトになってもまだ機能していることです。

このサービスでは、長時間実行されるメソッドを作成し、そこでログファイルを作成してから、タイムアウトをサービスしますが、サービスのタイムアウトが期限切れになっても、長時間実行されるメソッドが実行を終了するまでデータを追加するログファイルです.?

これはどのように起こりますか?それを止める方法はありますか?

サービスのタイムアウトは 1 分です

長時間実行メソッドの所要時間は :10 分です

このサービスは、WAS を使用して IIS 7.5 でホストされていました

ここに私のサービス実装クラスがあります

public class LongRunner : ILongRunner
{
    public void LongRunnerMethod()
    {
        int counter = int.Parse(ConfigurationManager.AppSettings["val"]);
        string text = string.Empty;

        for (int i = 0; true; i++)
        {
            Thread.Sleep(1000);
            if (i >= counter)
                break;
            text = string.Concat(i.ToString(), DateTime.Now.ToString());
            File.AppendAllText(@"C:\Looger\log.txt", text);
        }
    }
}

ここに私のサービスインターフェースがあります

[ServiceContract]
public interface ILongRunner
{
    [OperationContract]
    void LongRunnerMethod();
}

最後に、ここにWeb構成があります

    <?xml version="1.0"?>
    <configuration>
  <appSettings>
    <add key="val" value="600"/>
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="ORServiceBehavior" name="PTS.LongRunner">
        <endpoint binding="netTcpBinding" bindingConfiguration="DefaultNetTcpBinding" name="ORServiceTCPEndPoint"
                contract="PTS.ILongRunner" address="" >
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange"/>
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8079/___/_________.svc" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <bindings>
      <netTcpBinding>
        <binding name="DefaultNetTcpBinding" maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" >
          <reliableSession enabled="false" ordered="false" inactivityTimeout="00:10:00"/>
          <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="32" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
          <security mode="Message">
            <transport clientCredentialType="Windows"/>
          </security>
        </binding>
      </netTcpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ORServiceBehavior">
          <serviceMetadata httpGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="false" />
          <serviceThrottling maxConcurrentCalls="200" maxConcurrentSessions="200" maxConcurrentInstances="200" />
          <dataContractSerializer maxItemsInObjectGraph="50000" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

  <system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/>
   </system.webServer>

   </configuration>
4

1 に答える 1