0

我正在尝试了解如何使用 Windows 身份验证 (Active Directory) 来保护我的 Web 服务。我正在使用为 c# 4.0(vs 2010)提供的“新”模板,目前有这个,但我需要将它托管在 Windows 服务中 - 这可能吗?

我认为 WCF Rest clientCredentialType ="Windows" 实际上使用 IIS 来提供这种类型的安全性?

我搜索了互联网,发现了许多 C# 3.5 的示例,但没有找到提供给 vs 2010 C# 4.0 以创建休息服务的新模板。W

<standardEndpoints>
  <webHttpEndpoint>
    <standardEndpoint name="" helpEnabled="true" 
                      automaticFormatSelectionEnabled="true">
      <security mode="">
        <transport clientCredentialType = "Windows" />
      </security>
4

1 回答 1

0

VS 2010 中的新模板称为 WCF REST 服务应用程序。它使用由ServiceRoute. 此应用程序类型依赖于打开的 IIS 托管(或通常的 Web 服务器托管)AspNetCompatibility。不能直接转换成windows服务中的托管。某些 WCF REST 功能(WebRouting、输出 chache 配置文件)取决于AspNetCompatibility通常在 Web 服务器之外不可用的功能。

但如果您不需要这些功能,您可以轻松地在 Windows 服务中托管 WCF REST 服务。您可以将新项目作为 WCF 服务库启动,将第二个项目作为 Windows 服务启动,以从库中托管服务。

您不需要 .NET 4.0 中的任何新模板来定义具有 Windows 安全性的 WebHttp 端点。这就够了:

<bindings>
  <webHttpBinding>
    <binding>
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows" />
      </security>
    </binding>
  </webHttpBinding>
</bindings>

通过省略元素namebinding您正在定义默认webHttpBinding配置。每次您使用WebHttpBinding此配置定义端点时,都会使用该配置。StandardEnpoint是 WCF 4.0 的新特性。在这种情况下也可以使用它,但不是必需的。

于 2011-01-20T20:02:35.940 回答