2014-01-15 29 views
4

我有一個解決方案,它包含一個WCF服務,一個Windows服務(託管它)和一個WPF應用程序來使用它。我有一個「數據訪問DLL」,我正在引用該服務。當我搜索某個服務的解決方案時,它會查找並引用它,而且它也會爲其生成app.config文件。WPF應用程序不更新WCF服務的超時綁定信息

我遇到的問題是,綁定信息並非全部更新。我的服務配置了超時,這些超時未在本地app.config文件中生成/更新。我能夠通過手動添加它來解決它,並且它工作正常;但是,我希望能夠自動更新它們。

這是服務綁定的配置:

<bindings> 
     <netTcpBinding> 
     <binding name="StreamingBinding" receiveTimeout="00:15:00" sendTimeout="00:15:00" 
      transferMode="Streamed" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
      <security mode="None" /> 
     </binding> 
     </netTcpBinding> 
    </bindings> 

這是當我引用服務正在產生什麼(注意它缺少超時(S)):

<bindings> 
      <netTcpBinding> 
       <binding name="NetTcpBinding_ITestService" transferMode="Streamed"> 
        <security mode="None" /> 
       </binding> 
      </netTcpBinding> 
     </bindings> 

有誰知道我在做什麼錯誤/失蹤?

預先感謝您!下面


每請求我對服務的app.config和客戶端的app.config:

服務:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" /> 
    </system.web> 
    <system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="StreamingBinding" receiveTimeout="00:15:00" sendTimeout="00:15:00" 
      transferMode="Streamed" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
      <security mode="None" /> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
    <services> 
     <service name="TestService.Wcf.TestServiceWcf"> 
     <endpoint address="" binding="netTcpBinding" bindingConfiguration="StreamingBinding" 
      contract="TestService.Wcf.ITestServiceWcf"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" 
      contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:8525/TestServiceService" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
</configuration> 

客戶:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
      <netTcpBinding> 
       <binding name="NetTcpBinding_ITestServiceWcf" transferMode="Streamed"> 
        <security mode="None" /> 
       </binding> 
      </netTcpBinding> 
     </bindings> 
     <client> 
      <endpoint address="net.tcp://localhost:8525/TestServiceService" 
       binding="netTcpBinding" bindingConfiguration="NetTcpBinding_ITestServiceWcf" 
       contract="TestServiceService.ITestServiceWcf" name="NetTcpBinding_ITestServiceWcf"> 
       <identity> 
        <dns value="localhost" /> 
       </identity> 
      </endpoint> 
     </client> 
    </system.serviceModel> 
</configuration> 

回答

0

有無您是否將「StreamingBinding」與您的端點關聯?可能值得在「System.serviceModel」標籤之間發佈所有內容,以查看缺少的內容。 從你的帖子看來,雖然你在兩端都使用netTcpBinding,但它們可能不是來自同一端點,即客戶端可能只使用默認設置。

<services> 
     <service name="ServiceName"> 
     <endpoint binding="netTcpBinding" bindingConfiguration="StreamingBinding" 
      name="NetTcpEndPoint" contract="ServiceContractName" /> 
     </service> 
    </services> 
+0

我更新了上面的信息以顯示完整的app.config文件。當我在同一個解決方案中引用服務時,客戶端自動生成一個 – spyter