WCF仅通过在SVC项目中托管的HTTPS SVC

时间:2012-02-11 05:38:43

标签: asp.net-mvc asp.net-mvc-3 wcf https svc

我有一个WCF .svc文件添加到我的MVC3项目中,我试图阻止通过HTTP访问该服务。

使用下面的配置,我的服务在一个端口上通过https提供,然后在另一个端口上通过http提供。

我该如何防止这种情况?

由于

<system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="TS">
                    <security mode="Transport">
                        <transport clientCredentialType="None"/>
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <services>
            <service name="Endpoints" behaviorConfiguration="Default">
                <endpoint address="https://localhost:44301/Services/Endpoints.svc" binding="basicHttpBinding"  bindingConfiguration="TS" contract="UkerLtd.Services.IEndpoints"></endpoint>
                <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="Default">
                    <serviceMetadata httpGetEnabled="false" httpsGetUrl="https://localhost:44301/Services/Endpoints.svc" httpsGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="true" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
    </system.serviceModel>

1 个答案:

答案 0 :(得分:0)

您可以评论或删除IMetadataExchange的第二个端点,
由于它是针对相同的服务,因此元数据将被公开 serviceBehaviors / serviceMetadata中的httpsGetEnabled =“true”。

否则你可以“设置IIS以要求SSL”,但因为它不是一个选项..

希望这会有所帮助。