我一直在研究這個問題幾天,現在大多數解決方案都提到將兩個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>
基地址可以根據什麼服務器我發佈web服務器上的改變。例如,如果我決定發佈機器名稱:「wServer」,服務地址將變爲http://wserver.domain.com/web/services/MobileConsoleDownloadService.svc「有沒有一種方法可以改變服務地址wcf「beginrequest」事件? – ecMode
這很好,那麼你只會替換服務的基地址,並且所有的端點地址(相對的)都會保持不變。在Visual Studio中的「配置變換」是一個好方法這樣每次你發佈到一個新的環境時,它都會更新配置中的基地址,而沒有其他任何東西! – Jeff
此外,如果你設置的環境相同,你可以始終使基地址爲localhost (如果你願意,可以使用端口號),這樣你不需要在環境中改變太多......除了調試時,因爲你正在使用8080 – Jeff