2011-09-01 23 views
1

我有一個WCF服務暴露了大約34個方法。直到使用MetadataExchangeClient交流今天的元數據中工作得很好,但突然我開始收到以下異常:元數據交換問題 - 方法數量限制?

元數據包含無法解析的引用:http://localhost:1150/service.svc?wsdl=wsdl0

最「有趣」的事情是,如果我在服務合同中註釋了一些方法(,無論哪個方法是),以便服務公開方法我可以正確地獲取元數據。該web.config設置讀取

<system.serviceModel> 
<services> 
    <service name="(...)" serviceBehavior="(...)"> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
     <behavior name="(...)"><serviceMetadata httpGetEnabled="True"></behavior> 
    <serviceBehaviors> 
</behaviors> 

所有名稱中的名稱空間限定的,一切運作良好,同時露出,比如說,15點的方法。每當我試圖揭露更多,無論哪一個,我都會得到這個例外。我究竟做錯了什麼?

回答

1

我敢打賭,添加的方法使消息大小大於默認的最大值。您是否有內部例外情況,指出「傳入消息的最大消息大小限額(65536)已被超出」?

如果是增加你的MEX綁定的MaxReceivedMessageSize:

<services> 
     <service> 
      <endpoint contract="IMetadataExchange" binding="wsHttpBinding" bindingConfiguration="mexBinding" address="mex" /> 
     </service> 
    </services> 
    <bindings> 
     <wsHttpBinding> 
      <binding name="mexBinding" maxReceivedMessageSize="5000000"> 
       <security mode="None"/> 
      </binding> 
     </wsHttpBinding> 
    </bindings> 

注意,端點綁定不標準 「mexHttpBinding」。我從http://www.dasblonde.net上發佈的complete example複製。