English 中文(简体)
WCF 间歇时间
原标题:WCF timing out intermittently
  • 时间:2009-09-08 23:17:43
  •  标签:

所有人,

我有一笔按期提供的服务,通常是在大约十个或十二个客户要求之后。 该处利用反思,在拥有一套习俗特性的大会(WAP dll)中找到班级。 这一过程本身非常迅速,通常只花几毫秒,当它发挥作用时,它就发挥了巨大作用。

在电话码和服务本身中设置一个空白点,告诉我,时间是在WCF客户代理班发出的呼吁与实际执行这种方法之间。

想法?

更新:约束力,等等。

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Sdd.Services.ControlPanelBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="Sdd.Services.ControlPanelBehavior"
        name="Sdd.Services.ControlPanel">
        <endpoint address="" binding="wsHttpBinding" contract="Sdd.Services.IControlPanel">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>

UPDATE: And here s relevant part from theuser s web.config:

 <system.serviceModel>
  <bindings>
   <wsHttpBinding>
    <binding name="WSHttpBinding_IControlPanel" 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" establishSecurityContext="true" />
     </security>
    </binding>
   </wsHttpBinding>
  </bindings>
  <client>
   <endpoint address="http://localhost:81/services/ControlPanel.svc"
    binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IControlPanel"
    contract="PublicSite.IControlPanel" name="WSHttpBinding_IControlPanel">
    <identity>
     <dns value="localhost" />
    </identity>
   </endpoint>
  </client>
 </system.serviceModel>
最佳回答

谁!

这可能是错误的最荒谬之处,但我对问题作了说明:由于Im曾经使用网络参考资料(asmx网络服务),而不是使用服务参考资料(WCF),我忽略了包括代用物体。 改变

 [WebMethod]
    public static List<Page>PagesGetAll()
    {
        ControlPanelClient cp = new ControlPanelClient();
        Page[] pageArray = cp.NavigationPagesGetAll();
        List<Page> pageList = pageArray.ToList<Page>();

        // make sure that the page list in the database is up-纽约总部-date.
        foreach(Page page in pageList)
            Navigation.PageUpdate(page);

        return pageList;
    }

纽约总部

    public static List<Page>PagesGetAll()
    {
        List<Page> pageList = null;

        using (ControlPanelClient cp = new ControlPanelClient())
        {
            Page[] pageArray = cp.NavigationPagesGetAll();
            pageList = pageArray.ToList<Page>();
            // implied cp.Close() from "using" statement
        }

        // make sure that the page list in the database is up-纽约总部-date.
        foreach(Page page in pageList)
            Navigation.PageUpdate(page);

        return pageList;
    }

这个问题已经消失。 在核实这一解决办法之后,我也增加了同时提出的申请数目,因为似乎合乎逻辑的是,同时提出超过10-12项的请求将造成我前面看到的同样的问题。

感谢大家。

问题回答

帮助诊断这类问题的一个良好办法是,可在以下网站查询:http://msdn.microsoft.com/en-us/library/ms733025.aspx”rel=“nofollow noreferer”>,用户和服务器,并使用。 服务追踪工具。 这将使你更好地了解问题究竟是在哪里(在什么方法或用什么方法)?

不幸的是,大政中最重要的部分(约束和服务终点)缺失,客户也缺少。

但是,你描述的方式是,10-12项申请似乎行得通,然后出现故障,这可说明一个与服务器上的一致/rot合的问题。

我将努力增加同时发出的呼吁和开会的次数,以便看这是否有助于。 为此,你需要在服务器上的行为组合中添加一个<条码>服务电话部分:

<behavior name="Sdd.Services.ControlPanelBehavior">
   <serviceMetadata httpGetEnabled="true" />
   <serviceDebug includeExceptionDetailInFaults="false" />
   <serviceThrottling
      maxConcurrentCalls="25"          // default is 16
      maxConcurrentSessions="25"       // default is 10
      maxConcurrentInstances="25" />   // no default
</behavior>

如果能提供这种帮助的话,你会遇到太多会议或同时发出呼吁的问题。 w) 违约后加注议定书将使用一届会议,因此,也许你需要告诉它使用每次电话。

页: 1





相关问题
热门标签