配置绑定扩展';system.serviceModel/bindings/basicHttpsBinding

本文关键字:bindings basicHttpsBinding serviceModel 绑定 扩展 配置 system | 更新日期: 2023-09-27 18:27:46

当我尝试导航到.svc文件时,会出现此错误。它似乎没有找到我的basicHttpsBinding;这是我的web.config中的部分:

<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<protocolMapping>
  <add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true"/> 

我试着在谷歌上搜索,但我能找到的任何答案似乎都不适用于我在这里做的事情。我发现的大部分内容都是关于自定义绑定的,我想我没有。老实说,我甚至不确定是什么原因导致了这个错误,所以任何帮助都将不胜感激。如果您需要更多信息,请告诉我,我会添加它。

配置绑定扩展';system.serviceModel/bindings/basicHttpsBinding

BasicHttpsBinding是.NET 4.5中的一个新绑定,因此您不能在4.0应用程序中使用它。要么删除protocolMapping,要么使用另一个绑定,如basicHttpBindingwsHttpBinding

当您在IIS中配置SSL时,这也应该起作用。

如果您有与我类似的场景,其中Visual Studio生成的Web.config具有以下配置:

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <pages controlRenderingCompatibilityVersion="4.0" />
  </system.web>

添加<httpRuntime targetFramework="4.5" />

所以你现在有

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <pages controlRenderingCompatibilityVersion="4.0" />
    <httpRuntime targetFramework="4.5" /> 
  </system.web>

我还删除了<pages controlRenderingCompatibilityVersion="4.0" />,对我的情况没有任何影响。

web.config中删除protocolMapping部分,它就可以工作了。

如果您使用框架4.5或更高版本,您可以将以下代码添加到web.config 中

可以在标记上设置以下属性。

  <system.Web>
    <httpRuntime targetFramework="4.8" />
  </system.Web>

在VS2022上,我明确指定了targetFramework属性,如下所示:

从这个

<httpRuntime/>

到此

<httpRuntime targetFramework="4.8"/>

而且效果很好!