Iis 将两个绑定添加到web.config

Iis 将两个绑定添加到web.config,iis,web-config,Iis,Web Config,我正在尝试启用一个将使用两个绑定的应用程序。 因为我将把它分发给客户机,所以有些将有对HTTP和HTTPS开放的IIS,有些可能只有其中一个。 根据IIS的配置,我无法完成在HTTP和HTTPS上提供访问权限的任务。 这是我的web.config: <system.serviceModel> <services> <service behaviorConfiguration="RoutingBehavior" name="System.Ser

我正在尝试启用一个将使用两个绑定的应用程序。 因为我将把它分发给客户机,所以有些将有对HTTP和HTTPS开放的IIS,有些可能只有其中一个。 根据IIS的配置,我无法完成在HTTP和HTTPS上提供访问权限的任务。 这是我的web.config:

<system.serviceModel>
    <services>
        <service behaviorConfiguration="RoutingBehavior" name="System.ServiceModel.Routing.RoutingService">
            <endpoint address="" behaviorConfiguration="WebBehaviorHTTPS" binding="basicHttpBinding" bindingConfiguration="BasicSSL" name="RouterEndpoint" contract="System.ServiceModel.Routing.IRequestReplyRouter" >
            </endpoint>
            <endpoint address="http://" behaviorConfiguration="WebBehavior" binding="basicHttpBinding" bindingConfiguration="Basic" name="RouterEndpoint" contract="System.ServiceModel.Routing.IRequestReplyRouter" >
            </endpoint>
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="RoutingBehavior">
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
                <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
        </serviceBehaviors>
        <endpointBehaviors>
            <behavior name="WebBehaviorHTTPS">
                <webHttp/>
            </behavior>
            <behavior name="WebBehavior">
                <webHttp/>
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <bindings>
        <basicHttpBinding>
            <binding name="Basic" receiveTimeout="02:30:00" sendTimeout="02:30:00" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
                <security mode="None">
                    <transport clientCredentialType="None" />
                </security>
                <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
            </binding>
            <binding name="BasicSSL" receiveTimeout="02:30:00" sendTimeout="02:30:00" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
                <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
                <security mode="Transport">
                    <transport clientCredentialType="None" />
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="False" multipleSiteBindingsEnabled="True">
        <serviceActivations>
            <add relativeAddress="EZRouterService.svc" service="System.ServiceModel.Routing.RoutingService, System.ServiceModel.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" factory="Equivio.Zoom.Web.EZRouterServiceFactory"/>
        </serviceActivations>
    </serviceHostingEnvironment>
</system.serviceModel>


编辑:当访问应用程序时,使用第一个绑定(上面列表中的第一个)。当我切换到HTTP环境时,我无法访问

调试时,我得到以下异常:


其他信息:找不到与绑定BasicHttpBinding的终结点的方案http匹配的基址。注册的基址方案是[https]。

我建议为两个服务端点提供一个唯一的名称值,并设置它们使用相同的地址,因为它们已经具有不同的bindingConfiguration和behaviorConfiguration

<services>
    <service behaviorConfiguration="RoutingBehavior" name="System.ServiceModel.Routing.RoutingService">
        <endpoint address="" behaviorConfiguration="WebBehaviorHTTPS" binding="basicHttpBinding" bindingConfiguration="BasicSSL" name="RouterEndpointSSL" contract="System.ServiceModel.Routing.IRequestReplyRouter" >
        </endpoint>
        <endpoint address="" behaviorConfiguration="WebBehavior" binding="basicHttpBinding" bindingConfiguration="Basic" name="RouterEndpointBasic" contract="System.ServiceModel.Routing.IRequestReplyRouter" >
        </endpoint>
    </service>
</services>


我相信,对于您当前的relativeAddress=“EZRouterService.svc”和endpoint address=“http://”,由于该值不是完整地址,http需要使用的URI是http://{baseAddress}/EZRouterService.svc/http://可能会引起一些混淆

请解释在访问应用程序时使用第一个绑定时“无法完成任务”的含义(第一个绑定是上面列表中的第一个绑定)。当我切换到HTTP环境时,我无法访问。谢谢。我知道这个评论是在一段时间后发表的,但它奏效了。