仅使用 HTTP 的 WebServiceHostFactory

问题描述 投票:0回答:1

我在以编程方式创建的 WebForms 应用程序中有一个 WCF 服务。该服务的定义如下:

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
    public class ECConfigService : IECConfigService

其中 IECConfigService 是我的服务合同。服务路由是在global.asax中动态添加的:

        System.Web.Routing.RouteTable.Routes.Add(
            new System.ServiceModel.Activation.ServiceRoute(
                "ECConfigService",
                new System.ServiceModel.Activation.WebServiceHostFactory(),
                typeof(ECConfigService.ECConfigService)));

该服务工作正常,但我想将其限制为仅 HTTPS。我怎样才能以编程方式做到这一点?我发现的所有示例都使用 web.config 设置服务,并且不通过代码添加路由。

理想情况下,我想要一种在运行时(初始化)确定是否允许 HTTP 的方法,但如果我必须仅硬编码 HTTPS,那是可以接受的。

c# web-services wcf webforms
1个回答
0
投票

我有一个想法,你可以参考:

由于您不想使用 HTTP 并使用 HTTPS,您可能需要像这样设置配置文件:

<behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpsGetEnabled="true" httpGetEnabled="false"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

这里无法使用http获取元数据。

代码可以参考这个:

 Dim behavior As New ServiceMetadataBehavior()
            behavior.HttpsGetEnabled = True
            behavior.HttpGetEnabled = False ' 
            selfHost.Description.Behaviors.Add(behavior)
© www.soinside.com 2019 - 2024. All rights reserved.