gpt4 book ai didi

wcf - 使用 标签配置 WCF

转载 作者:行者123 更新时间:2023-12-04 09:07:50 25 4
gpt4 key购买 nike

我正在尝试解决 WCF 错误 found in my previous question .基本上,错误是:

读取 XML 数据时已超出最大字符串内容长度配额 (8192)。

有人建议使用 服务 在我的 web.config 中添加标签来解决我的问题。

现在,我面临一个不同的问题。我不知道我应该如何配置 服务 我的 web.config 中的标记以在我的服务器上正常工作。当我尝试使用 时,总是出现以下错误。服务 标签:

服务器没有提供有意义的回复;这可能是由于契约(Contract)不匹配、 session 过早关闭或内部服务器错误造成的。

这是我的带有 的 web.config服务 标签添加:

<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding
name="BasicHttpBinding_Service1"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
allowCookies="false"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536"
maxBufferPoolSize="524288"
maxReceivedMessageSize="65536"
messageEncoding="Text"
textEncoding="utf-8"
transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas
maxDepth="32"
maxStringContentLength="10000"
maxArrayLength="16384"
maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint
address="http://localhost:53931/WCF/Service1.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_Service1"
contract="ServiceReference.Service1"
name="BasicHttpBinding_Service1" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<!--PROBLEM SOMEWHERE IN THE SERVICES TAG-->
<services>
<service
behaviorConfiguration="NewBehavior"
name="AspPersonalWebsite.ServiceReference">
<endpoint
address="http://localhost:53931/WCF/Service1.svc"
binding="basicHttpBinding"
contract="ServiceReference.Service1"
bindingConfiguration="BasicHttpBinding_Service1" />
</service>
</services>

请注意,通过删除 服务 标记一切正常,但是我将无法解决发布在我的 previous question 上的原始问题.

所以有人可以告诉我我的 web.config 是否有问题,特别是在我的 中服务 标签?!

最佳答案

好的,让我们解决这个问题:

第一 ,你需要定义一个自定义的basicHttpBinding使用一些自定义设置绑定(bind)配置:

<bindings>
<basicHttpBinding>
<binding name="LargeSettings"
maxBufferSize="524288"
maxBufferPoolSize="524288"
maxReceivedMessageSize="6553600">
<readerQuotas maxDepth="32" maxStringContentLength="100000"
maxArrayLength="16384" maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>

此部分需要在您的 中服务器端的web.config ,以及您的 客户端配置 .

其次 , 在 服务器端 , 你需要有一个 <services>定义您的服务及其端点及其配置的标签:
<services>
<service name="YourNamespace.YourClassName"
behaviorConfiguration="ServiceWithMetadata">
<endpoint name="Default"
address="http://localhost:53931/WCF/Service1.svc"
binding="basicHttpBinding"
bindingConfiguration="LargeSettings"
contract="YourNamespace.IServiceContract" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceWithMetadata">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>

检查点:
  • 您的 服务名称 必须是您的服务类的完全限定名称 ( YourNamespace.YourClassName ) - 实现您的服务契约的类
  • 您的 服务契约(Contract)在端点中还必须是您的服务契约(Contract)的完全限定名称 (YourNamespace.IYourServiceContract)
  • 您的 <service> 的行为配置标签必须引用并完全匹配 name= <behaviors> 中定义的属性栏目

  • 第三 ,在客户端,你需要这样的东西:
    <client>
    <endpoint name="Default"
    address="http://localhost:53931/WCF/Service1.svc"
    binding="basicHttpBinding"
    bindingConfiguration="LargeSettings"
    contract="ServiceReference.IYourService" />
    </client>

    您需要在服务器端引用服务定义中定义的端点,需要使用相同的绑定(bind)和绑定(bind)配置,并且需要使用服务引用中定义的服务契约。

    关于wcf - 使用 <services> 标签配置 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731403/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com