【问题标题】:WCF running under IIS?WCF 在 IIS 下运行?
【发布时间】:2009-03-27 09:14:35
【问题描述】:

我们有一个包含 ASP.Net(表单)UI 和一些 WCF Web 服务的 Web 项目。这是托管在 IIS 6 中的。UI 和 WCF 服务都使用需要许可证的 PDF 生成工具,该工具存储在 web.config 文件的<appSettings> 部分。许可证基于网站的域,即 example.com(所有子域都包含在许可证中)。

当调用该工具的 DLL 时,它会检查它是否确实在获得许可的域中运行。当 UI 调用此工具时,一切正常。当 WCF 服务执行相同操作时,该工具会以某种方式获取服务器的名称而不是域,因此认为它是未经许可的。

我真的不想专注于这个工具,我想知道的是:

如果.aspx.svc 文件(及其父DLL)都托管在同一个IIS 6 网站和虚拟目录中,它们是否应该在相同的帐户/用户/权限集/等下运行? WCF 服务实现(和合同)在单独的 DLL 中是否重要?

【问题讨论】:

    标签: asp.net wcf iis-6


    【解决方案1】:

    我想知道该工具是如何进行检查的...我希望您可能需要enable ASP.NET compatibility mode。要尝试的另一件事是在 WCF 配置中使地址显式(而不是相对)。

    不,单独的 dll 无关紧要,并且不应该与帐户有关(尽管一切皆有可能!)。

    编辑:

    或在 web.config 中的 system.serviceModel 下:

     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    

    【讨论】:

      【解决方案2】:

      打开 ASP.Net 兼容性确实可以解决问题。谢谢马克格拉维尔!但是,值得指出的是,您还需要更改实现服务契约的类 - 类需要以下属性:

      [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
      

      它也可以设置为必需。有一个handy table on MSDN

      (我不知道显式寻址是否也可以工作,我们不能使用它,因为该服务位于 SSL 卸载负载平衡器 (F5) 之后。因此 WCF 认为该服务是通过 HTTP 而实际上是在HTTPS。)

      【讨论】:

        猜你喜欢
        • 2010-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-25
        • 2013-08-15
        • 2016-09-26
        • 2011-09-07
        • 2010-10-01
        相关资源
        最近更新 更多