2012-02-12 15 views
5

Bir mex endpiontı da olan bir WCF hizmeti olarak ortaya çıkan birçok işlevle büyük bir sınıfa sahibim. Ben Visual Studio 2010 bu hizmet için bir başvuru eklemek çalışıyorum, şimdi, aşağıdaki hatayı alıyorum: yöntem sayımı geri kesme yanındaVS 2010'a kadar birçok fonksiyona sahip büyük WCF servisleri nasıl yapılır?

mex error

Yapabileceğim bir şey var mı, Bu hatayı yapmak için kaybolur?

 // Check to see if the service host already has a ServiceMetadataBehavior 
     ServiceMetadataBehavior smb = svh.Description.Behaviors.Find<ServiceMetadataBehavior>(); 
     // If not, add one 
     if (smb == null) 
      smb = new ServiceMetadataBehavior(); 
     //smb.HttpGetEnabled = true; 
     smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15; 
     svh.Description.Behaviors.Add(smb); 

     // Add MEX endpoint 
     svh.AddServiceEndpoint(
      ServiceMetadataBehavior.MexContractName, 
      MetadataExchangeBindings.CreateMexTcpBinding(), 
      location+"/mex" 
     ); 

cevap

3

Sen yapılandırma dosyasında readerQuota düğümde maxNameTableCharCount özniteliği ile bu geçersiz kılabilirsiniz:

İşte mex bitiş noktası için kullanıyorum kodu. http://msdn.microsoft.com/en-us/library/ms731325.aspx

Bu otomatik olarak oluşturulmuş istemci tarafında konfigürasyonunun bir örneği aşağıda verilmektedir: Burada

<readerQuote> dokümantasyonunda olup. Varsayılan değer 16384'tür.

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="YOUR_NAME" closeTimeout="00:01:00" 
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
      maxBufferSize="268438456" maxBufferPoolSize="524288" maxReceivedMessageSize="268438456" 
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
      useDefaultWebProxy="true"> 
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
      maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <security mode="Transport"> 
      <transport clientCredentialType="Basic" proxyCredentialType="None" 
       realm="" /> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="YOUR_ADDRESS" binding="basicHttpBinding" 
     bindingConfiguration="YOUR_ENDPOINT" contract="YOUR_CONTRACT" 
     name="YOUR_NAME" /> 
    </client> 
    </system.serviceModel> 
+0

bu sunucu tarafı mı? Bunu nasıl yapacağınıza dair kod örneği verebilir misiniz? –

+1

mex uç nokta kodu güncellemesine bakın. Client.config dosyasına baktım ve gerçekten de readerQuotas düğümünü içeriyor, ancak maxNameTableCharCount öznitelikleri –

+0

kullanmıyor, bu benim kullandığım model: , yine de hatayı alıyorum ve bu hizmetin büyük olduğu –