Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF-SOAP和REST上的Http和https_C#_Wcf_Rest_Soap - Fatal编程技术网

C# WCF-SOAP和REST上的Http和https

C# WCF-SOAP和REST上的Http和https,c#,wcf,rest,soap,C#,Wcf,Rest,Soap,我有一个网站,需要能够创建http和https连接。我已经安装了IIS,以便它在SOAP和REST请求上都接受https,这是可行的 我的问题是,没有https的客户可以使用我的网站。如果他们没有,我会删除https的站点绑定: 执行此操作后,访问站点时出现以下异常:“找不到与绑定端点的scheme http匹配的基址” 我的web.config如下所示: <system.serviceModel> <bindings> <basicHttpBinding

我有一个网站,需要能够创建http和https连接。我已经安装了IIS,以便它在SOAP和REST请求上都接受https,这是可行的

我的问题是,没有https的客户可以使用我的网站。如果他们没有,我会删除https的站点绑定:

执行此操作后,访问站点时出现以下异常:“找不到与绑定端点的scheme http匹配的基址”

我的web.config如下所示:

 <system.serviceModel>
 <bindings>
  <basicHttpBinding>
    <binding name="basicHttpBinding" messageEncoding="Text">
    </binding>

    <binding name="basicHttpsBinding" messageEncoding="Text">
      <security mode="Transport" />
    </binding>

  </basicHttpBinding>
  <webHttpBinding>
    <binding name="webHttpBinding">
    </binding>

    <binding name="webHttpsBinding">       
      <security mode="Transport" />
    </binding>
  </webHttpBinding>
</bindings>

<services>
  <service name="XXX.XXX">
    <endpoint address="rest" behaviorConfiguration="RestBehavior" binding="webHttpBinding"
              bindingConfiguration="webHttpBinding" contract="XXX.IXXX">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

    <endpoint address="rest" behaviorConfiguration="RestBehavior" binding="webHttpBinding"
              bindingConfiguration="webHttpsBinding" contract="XXX.IXXX">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

    <endpoint address="" behaviorConfiguration="XXXBehavior" binding="basicHttpBinding"
              bindingConfiguration="basicHttpBinding" contract="XXX.IXXX">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

    <endpoint address="" behaviorConfiguration="XXXBehavior" binding="basicHttpBinding"
              bindingConfiguration="basicHttpsBinding"  contract="XXX.IXXX">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

    <endpoint address="mex" binding="mexHttpBinding" name="Mex" contract="IMetadataExchange" />
  </service>
</services>
<behaviors>
  <endpointBehaviors>
    <behavior name="XXXBehavior">
      <webHttp/>
    </behavior>

    <behavior name="RestBehavior">
      <webHttp helpEnabled="true" defaultBodyStyle="Bare"  defaultOutgoingResponseFormat="Json"
               automaticFormatSelectionEnabled="false" faultExceptionEnabled="true" />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>


我做错了什么?

您正在使用具有传输安全性的绑定配置(
security mode=“transport”
),但随后您将IIS配置为不支持它


如果从IIS中删除HTTPS,则必须从web.config中删除HTTPS端点。

您使用的是具有传输安全性的绑定配置(
security mode=“transport”
),但随后您将IIS配置为不支持它


如果从IIS中删除HTTPS,则必须从web.config中删除HTTPS端点。

您使用的是具有传输安全性的绑定配置(
security mode=“transport”
),但随后您将IIS配置为不支持它


如果从IIS中删除HTTPS,则必须从web.config中删除HTTPS端点。

您使用的是具有传输安全性的绑定配置(
security mode=“transport”
),但随后您将IIS配置为不支持它


如果从IIS中删除HTTPS,则必须从web.config中删除HTTPS端点。

什么是“没有HTTPS的客户”?@GlenThomas我正在开发的应用程序可以安装在不同的服务器上,一些客户没有HTTPS证书可供使用。我明白了。他们可以使用自签名证书。如果应用程序需要安全连接,那么总比没有好“没有https的客户”是什么意思?@GlenThomas我正在开发的应用程序可以安装在不同的服务器上,一些客户没有https证书可供使用。我明白了。他们可以使用自签名证书。如果应用程序需要安全连接,那么总比没有好“没有https的客户”是什么意思?@GlenThomas我正在开发的应用程序可以安装在不同的服务器上,一些客户没有https证书可供使用。我明白了。他们可以使用自签名证书。如果应用程序需要安全连接,那么总比没有好“没有https的客户”是什么意思?@GlenThomas我正在开发的应用程序可以安装在不同的服务器上,一些客户没有https证书可供使用。我明白了。他们可以使用自签名证书。如果应用程序需要安全连接,那么总比没有好谢谢你的回答。您知道是否可以配置my web.config,以便在IIS不允许https时保留当前设置但禁用basicHttpsBinding?您可以在代码中生成端点,而不是在web.config中指定它们。这可能是最好的解决方案。谢谢你的回答。您知道是否可以配置my web.config,以便在IIS不允许https时保留当前设置但禁用basicHttpsBinding?您可以在代码中生成端点,而不是在web.config中指定它们。这可能是最好的解决方案。谢谢你的回答。您知道是否可以配置my web.config,以便在IIS不允许https时保留当前设置但禁用basicHttpsBinding?您可以在代码中生成端点,而不是在web.config中指定它们。这可能是最好的解决方案。谢谢你的回答。您知道是否可以配置my web.config,以便在IIS不允许https时保留当前设置但禁用basicHttpsBinding?您可以在代码中生成端点,而不是在web.config中指定它们。这可能是最好的解决办法。