2012-06-26 80 views
0

我有一個使用tcp綁定的服務,並且此服務允許客戶端與數據庫進行交互。我使用EF和自我跟蹤實體。wcf異常:服務器沒有提供有意義的回覆

我想要做的一件事就是將文件存儲在數據庫中,所以爲了不超載電線,我有兩個表與他們相應的實體。一張表格文件的信息(類型,大小等)和其他表格,文件,存儲二進制信息,文件。

那麼,在本地,當我在同一臺計算機上運行客戶端和服務時,我可以存儲我想要的文件。我嘗試使用6MB的文件。但是,如果我在同一個局域網中的其他計算機上運行客戶端,那麼我有很多問題。

例如,如果我試圖存儲一個小文件,50kB,我沒有問題,但是如果我嘗試存儲6MB的文件,那麼我可能會得到不同的錯誤。

例如,如果我在客戶端配置一個低超時,例如1分鐘,得到如下錯誤:

System.TimeoutException:該發送到的net.tcp請求操作://192.168.1.5: 7997/CMMSHost在配置的超時(00:01:00)內未收到回覆。

如果我將客戶端配置有10分鐘的暫停,然後我得到了以下錯誤:

服務器未提供有意義的回覆

服務是在WPF應用程序託管,並在添加文檔到數據庫中的服務的Begin方法中,我發送帶有日誌的文本以知道是否接收到該呼叫。當我收到一些錯誤時,這個電話沒有收到,所以我認爲這個問題可能是由於某種原因,這個自加固的實體沒有到達該服務。

我對服務的app.config如下:

<endpoint address="" 
        binding="netTcpBinding" 
        bindingConfiguration="tcpBinding" 
        name="NetTcpBindingEndpoint" 
        contract="GTS.CMMS.Service.IService"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 

     <endpoint contract="IMetadataExchange" binding="mexTcpBinding" address="net.tcp://localhost:5000/mex" /> 
     </service> 
    </services> 

    <behaviors> 
     <serviceBehaviors> 
     <behavior name="behaviorConfig"> 
      <!-- 
      <serviceMetadata httpGetEnabled="true" />--> 
      <!--Necesario para poder enviar excepciones desde el servicio al cliente.--> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
      <serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="100" /> 
      <serviceMetadata/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 


    <bindings> 
     <netTcpBinding> 
     <binding name="tcpBinding" maxBufferSize="67108864" 
         maxReceivedMessageSize="67108864" maxBufferPoolSize="67108864" 
         transferMode="Buffered" closeTimeout="00:00:10" 
         openTimeout="00:00:10" receiveTimeout="00:20:00" 
         sendTimeout="00:01:00" maxConnections="100"> 
      <security mode="None"/> 
      <readerQuotas maxArrayLength="67108864" maxBytesPerRead="67108864" maxStringContentLength="67108864"/> 
      <reliableSession enabled="true" inactivityTimeout="00:20:00" /> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
    </system.serviceModel> 

而且客戶端配置爲:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="NetTcpBinding_IService" closeTimeout="00:01:00" 
      openTimeout="00:01:00" receiveTimeout="00:01:00" sendTimeout="00:01:00" 
      transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" 
      hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288" 
      maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536"> 
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
      maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <reliableSession ordered="true" inactivityTimeout="00:20:00" 
      enabled="true" /> 
      <security mode="None"> 
      <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" /> 
      <message clientCredentialType="Windows" /> 
      </security> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
    <client> 
     <endpoint address="net.tcp://192.168.1.5:7997/CMMSHost" binding="netTcpBinding" 
     bindingConfiguration="NetTcpBinding_IService" contract="IService" 
     name="NetTcpBinding_IService" /> 
    </client> 
    </system.serviceModel> 
</configuration> 

我用大readquotes,試圖丟棄的問題是文件大小,但問題仍然存在。

謝謝。

回答

1

我不認爲這是與WCF有關的問題。我假設它與你的IIS相關。 你可以在你的web.config中嘗試下面的代碼片段嗎?

<system.webServer> 
     <security> 
      <requestFiltering> 
       <requestLimits maxAllowedContentLength="524288000"/> 
      </requestFiltering> 
     </security> 
</system.webServer> 
+0

那麼,我已將安全性配置爲none,並且是自託管服務。可以更好地激活安全性並設置requiestFiltering參數? –

相關問題