0

私はWCFに少し慣れていないので、レコードを取得するための呼び出しには約20秒かかります.デバッグ中のローカル呼び出しでもその時間がかかります. 正しく完了しますが、非常に遅いです。

クライアントの呼び出し:

var docImgSvc = new DocImagingService.DocImagingStatusServiceClient("WSHttpBinding_IDocImagingStatusService");
CurrentManifest = docImgSvc.GetManifest(manifestLookup);  //<<---This takes 20 secs
if (CurrentManifest == null || CurrentManifest.ManifestId == 0)

サーバールーチン:

public Manifest GetManifest(int manifestNumber)
{
    var de = new DocumentImagingEntities(); //<<---Takes 20 secs before it gets here.
    var manifest = de.Manifests.FirstOrDefault(m => m.ManifestId == manifestNumber);
    return manifest;
}

サーバー構成:

  <system.serviceModel>
<services>
  <service name="DocImagingServices.DocImagingStatusService">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8732/Design_Time_Addresses/DocImagingServices/DocImagingStatusService/"/>
      </baseAddresses>
    </host>
    <endpoint address="" binding="wsHttpBinding" contract="DocImagingServices.IDocImagingStatusService">
      <identity>
        <dns value="localhost"/>
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="True"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

クライアント構成:

  <system.serviceModel>
<bindings>
  <wsHttpBinding>
    <binding name="WSHttpBinding_IDocImagingStatusService" 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="Text"
      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" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
<client>
  <endpoint address="http://localhost:8732/Design_Time_Addresses/DocImagingServices/DocImagingStatusService/"
  binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IDocImagingStatusService"
  contract="DocImagingService.IDocImagingStatusService" name="WSHttpBinding_IDocImagingStatusService">
    <identity>
      <dns value="localhost" />
    </identity>
  </endpoint>
</client>

4

1 に答える 1

0

以前、そのタイプの応答時間を確認したときは、アプリケーション プールの設定が原因でした。

アプリケーション プールの実行時にユーザー プロファイルをロードできるようにする設定があり、このロード時間は 20 秒と一致する可能性があります。

http://blogs.msdn.com/b/vijaysk/archive/2009/03/08/iis-7-tip-3-you-can-now-load-the-user-profile-of-the-applicationを参照してください。この値を設定する方法のスクリーン ダンプについては、-pool-identity.aspxを参照してください。

于 2012-10-25T21:28:30.510 に答える