我需要向一個web服務添加一個引數,但是它不讓我這么做。
這是我的App.Config
<?xml version="1.0"/span> encoding="utf-8"/span>?
<配置>
<啟動>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="tripAndTimeReportingServiceSoapBinding"/span>>
<mtomMessageEncoding messageVersion="Soap12" />
<httpsTransport />
</binding>
</customBinding>
</bindings>
<client>
<端點地址="https://soap.webfleet.com/v1.53/tripAndTimeReportingService"。
binding="customBinding" bindingConfiguration="tripAndTimeReportingServiceSoapBinding"
contract="TripAndTimeReportingService.tripAndTimeReporting"
name="tripAndTimeReportingPort" />
</client>
</system.serviceModel>
</configuration>
當我發送訊息時,它是有效的,但有時我得到這個錯誤
。傳入資訊的最大資訊大小配額(65536)已被 超過了。 要增加配額,請使用相應系結元素上的MaxReceivedMessageSize 屬性。
所以我嘗試做錯誤告訴我的事情,但是 c# 說不行。
到目前為止我所嘗試的
這給出了designtime錯誤 "無效的子元素"
<binding name="tripAndTimeReportingServiceSoapBinding"/span>>
<mtomMessageEncoding messageVersion="Soap12" />
<httpsTransport />
<maxReceivedMessageSize maxReceivedMessageSize="20000000" />
</binding>
這給出了designtime的錯誤 "缺少必要的空白"
。<binding name="tripAndTimeReportingServiceSoapBinding"/span>>
<mtomMessageEncoding messageVersion="Soap12" />
<httpsTransport />
<maxReceivedMessageSize="20000000" />
</binding>
這給出了運行時錯誤 "未識別的屬性",當我嘗試使用大寫字母(MaxReceivedMessageSize)時也是如此
<endpoint address="https://soap.webfleet.com/v1.53/tripAndTimeReportingService"/span>
binding="customBinding" bindingConfiguration="tripAndTimeReportingServiceSoapBinding"
contract="TripAndTimeReportingService.tripAndTimeReporting"
maxReceivedMessageSize="20000000"
name="tripAndTimeReportingPort" />
我讀過的其他鏈接
編輯部
根據@steeeeve的建議,我這樣修改了我的系結方式
。<binding name="tripAndTimeReportingServiceSoapBinding"/span>>
<mtomMessageEncoding messageVersion="Soap12" />
<httpsTransport maxBufferSize="20000000" maxReceivedMessageSize="20000000" />
</binding>
這樣一來,VS最終接受了這一點,但在運行時,我對一些資訊還是會出現這樣的錯誤。 所以實際上似乎沒有什么變化。
執行:
ex {"Error creating a reader for the MTOM message"}。 系統.Exception {System.ServiceModel.CommunicationException}
內部exeption :
InnerException {"The maximum buffer size (65536) has been exceeded while reading MTOM data. 讀取MTOM資料時,超過了最大的緩沖區大小(65536)。這個配額可以通過改變 創建MTOM讀取器時使用的maxBufferSize設定來增加這一配額。 讀取器時使用的maxBufferSize設定來增加這一配額。"}。System.Exception {System.Xml.XmlException}
堆疊跟蹤:
StackTrace " 在 系統.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 在 gttWebfleet.TripAndTimeReportingService.tripAndTimeReporting.showTracks(showTracks 請求) 在 gttWebfleet.TripAndTimeReportingService.tripAndTimeReportingClient.gttWebfleet.TripAndTimeReportingService.tripAndTimeReporting.showTracks(showTracks 請求)在C:DevelopmentPalmgttWebFleetgttWebfleetConnected ServicesTripAndTimeReportingServiceReference.cs:第20349行
在 gttWebfleet.TripAndTimeReportingService.tripAndTimeReportingClient.showTracks(AuthenticationParameters aParm, GeneralParameters gParm, ShowTracksParameter showTracksParam) 在C:DevelopmentPalmgttWebFleetgttWebfleetConnected ServicesTripAndTimeReportingServiceReference.cs:第20357行
在 gttWebfleet.WebFleetAPI.apiTripAndTimeReportingService.ShowTracks(DateTime startDay, DateTime endDay, String truckNumber, List`1& results) in C:DevelopmentPalmgttWebFleetgttWebfleetWebFleetAPIapiTripAndTimeReportingService.cs:line 204 "字串
uj5u.com熱心網友回復:
你應該在你的系結上添加引數,并且需要在服務器端和客戶端都添加。這里的例子:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding maxBufferSize="640000" maxReceivedMessageSize="640000" />
</basicHttpBinding>
</bindings>
</system.serviceModel>
uj5u.com熱心網友回復:
經過@Steeeve的一些提示和大量的嘗試和錯誤,我找到了一些有效的方法。
訣竅確實是在系結中增加大小,就像這樣
。<customBinding>
<系結名稱="tripAndTimeReportingServiceSoapBinding">。
< mtomMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" messageVersion="Soap12" writeEncoding="utf-8">
< readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</mtomMessageEncoding>
<httpsTransport maxBufferSize="640000" maxReceivedMessageSize="640000" />
</binding>
但也要禁用端點的mtom。
<endpoint address="https://soap.webfleet.com/v1.53/tripAndTimeReportingService/disable-mtom"/span>
binding="customBinding" bindingConfiguration="tripAndTimeReportingServiceSoapBinding"
contract="TripAndTimeReportingService.tripAndTimeReporting"
name="tripAndTimeReportingPort" />
由于某種原因,他們使用mtom作為默認的傳輸,我不知道這是否是一個穩定的配置,但現在看來,它終于可以作業了。
我仍然歡迎更好的建議。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/312423.html
標籤:
上一篇:如何為子圖的行和列添加標簽?

