如何将具有许多功能的大型 WCF 服务导入 VS 2010?
Posted
技术标签:
【中文标题】如何将具有许多功能的大型 WCF 服务导入 VS 2010?【英文标题】:How to make large WCF services with many functions importable into VS 2010? 【发布时间】:2012-02-12 21:58:55 【问题描述】:我有一个大型类,其中包含许多作为 WCF 服务公开的功能,它也有一个 mex 端点。现在,当我尝试在 Visual Studio 2010 中添加对该服务的引用时,出现以下错误:
除了减少方法计数之外,我还能做些什么来让这个错误消失?
这是我用于 mex 端点的代码:
// 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"
);
【问题讨论】:
【参考方案1】:您可以使用配置文件中 readerQuota 节点上的 maxNameTableCharCount 属性覆盖它。
这是
这是自动生成的客户端配置示例。默认值为 16384。
<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>
【讨论】:
这是服务器端吗?你能提供如何做到这一点的代码示例吗? 查看 mex 端点代码的更新。我查看了客户端app.config,确实包含readerQuotas节点,但没有maxNameTableCharCount属性 这是我正在使用的以上是关于如何将具有许多功能的大型 WCF 服务导入 VS 2010?的主要内容,如果未能解决你的问题,请参考以下文章
如何将单个 WCF 服务配置为具有多个 HTTP 和 HTTPS 端点?
Sql Azure Dac 导入/导出服务是 WCF 或 REST 还是其他?
无法将 Azure VM 上托管的 WCF 服务引用添加到 VS2015 项目