2013-05-17 60 views
0

我一直在研究這個問題幾天,現在大多數解決方案都提到將兩個app.config文件中的MaxReceivedMessageSize綁定設置更改爲以及web.config文件。但是,我的解決方案沒有app.config文件,所以我不太確定我在這裏做錯了什麼。傳入郵件的最大郵件大小限額(65536)已從表單提交中被超過

我的web客戶端正在從IIS 7部署。我試圖異步提交一個帶有xml數據的javascript表單作爲字符串到我的WCF Web服務,然後從客戶端觸發文件下載。這適用於較小的文件,但在較大的文件上失敗,因爲綁定似乎正在降到默認值。

在我的svclog中使用WCF跟蹤器我看到「傳入消息的最大消息大小配額(65536)已被超出。要增加配額,請在適當的綁定元素上使用MaxReceivedMessageSize屬性。來自我的服務。

這是我的web.config,我知道沒有被應用到我的請求。所以,我的請求甚至沒有離開我的JavaScript客戶端。

<system.serviceModel> 
    <bindings> 
     <webHttpBinding> 
     <binding name="customBindingNameForLargeMessages" 
        maxReceivedMessageSize="2147483647" transferMode="Streamed"> 
      <readerQuotas maxDepth="2147483647" 
         maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" 
         maxBytesPerRead="2147483647" 
         maxNameTableCharCount="2147483647" /> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http//localhost:32478/Services/MobileConsoleDownloadService.svc" 
     binding="webHttpBinding" bindingConfiguration="customBindingNameForLargeMessages" 
     contract="Foo.Bar.MobileConsole.Services.IMobileConsoleDownloadService" 
     name="" /> 
    </client> 
    <services> 
     <service name="Foo.Bar.MobileConsole.Services.MobileConsoleDownloadService"> 
     <endpoint address="http:localhost:32478/Services/MobileConsoleDownloadService.svc" 
      binding="webHttpBinding" bindingConfiguration="customBindingNameForLargeMessages" 
      name="" contract="Foo.Bar.MobileConsole.Services.IMobileConsoleDownloadService" /> 
     </service> 
    </services> 
    </system.serviceModel> 

回答

0

這個答案是你的「第二」的問題

<services> 
    <service name="Foo.Bar.MobileConsole.Services.MobileConsoleDownloadService"> 
    <endpoint address="services.whatever.svc" 
     binding="webHttpBinding" bindingConfiguration="customBindingNameForLargeMessages" 
     name="" contract="Foo.Bar.MobileConsole.Services.IMobileConsoleDownloadService" /> 
     <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8080/"/> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
+0

基地址可以根據什麼服務器我發佈web服務器上的改變。例如,如果我決定發佈機器名稱:「wServer」,服務地址將變爲http://wserver.domain.com/web/services/MobileConsoleDownloadService.svc「有沒有一種方法可以改變服務地址wcf「beginrequest」事件? – ecMode

+0

這很好,那麼你只會替換服務的基地址,並且所有的端點地址(相對的)都會保持不變。在Visual Studio中的「配置變換」是一個好方法這樣每次你發佈到一個新的環境時,它都會更新配置中的基地址,而沒有其他任何東西! – Jeff

+0

此外,如果你設置的環境相同,你可以始終使基地址爲localhost (如果你願意,可以使用端口號),這樣你不需要在環境中改變太多......除了調試時,因爲你正在使用8080 – Jeff

0

我得到了這個工作。指定了錯誤的地址。現在我需要弄清楚如何使用相對地址。

編輯:我要爲這個創建一個新的問題,但我會看看我是否先得到任何匹配。所以可以說我有

http://localhost:8080/services/whatever.svc 

是有什麼方法我可以指定

/services/whatever.svc 

?因爲我在不同的服務器上部署這個。

相關問題