WCF问题 - 公开服务

时间:2011-06-16 13:24:19

标签: wcf wcf-security

我们需要以下类型的服务:

  1. 公开发布。用户使用X509证书进行身份验证,
  2. 内部。被我们的网站消费。用户在网站上进行身份验证,用户名将传递给服务。
  3. 公开发布。用户根据与其IP地址匹配的传入令牌进行身份验证(我们需要支持的旧版功能)。
  4. 现在,我通过在WCF服务项目中创建SVC文件来实现#1。这些是在配置文件中配置的。我没有在该部分中指定任何内容,似乎SVC文件使用默认绑定(没有name属性的绑定)。这听起来不错吗?

    如果我要实现其他类型的服务,我需要在web.config的部分中指定服务并将它们指向它们的特定绑定/行为,或者创建三个单独的服务项目。什么是最佳做法?

    我们希望使用T4模板自动生成我们的服务(svc文件)。这一直到现在为止,但如果我继续,我必须生成web.config文件(这使得维护很难)。有没有办法拆分配置文件的system.service模型部分?

    感谢。

1 个答案:

答案 0 :(得分:0)

web.config(和app.config)文件可以拆分为单独的文件,如下所示。如果这是你想要的,你可以封装整个system.serviceModel元素。

<system.serviceModel>
    <services configSource="services.config" />

    <behaviors configSource="behavior.config" />

    <bindings>
        <wsHttpBinding>
            <binding name="Http" receiveTimeout="00:10:00">
                <security mode="None">
                    <transport clientCredentialType="None" />
                    <message clientCredentialType="None" establishSecurityContext="false" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>

    <!-- rest of WCF elements inline as in the bindings element or in other files -->
</system.serviceModel>

您只需要创建每个引用的文件。这是将环境(即Dev,QA,Staging,Prod)特定设置放在单独文件中的好方法,因此您可以参数化部署脚本。