2011-01-20 51 views
0

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

我认为WCF休息clientCredentialType =“窗口”实际上使用IIS来提供这种类型的安全?

我已经在网上搜索,发现与C#3.5的例子很多,但没有用于提供给VS 2010 C#4.0中的新模板,在VS 2010中创建一个休息service.W

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

回答

0

新的模板被称为WCF REST服务应用程序。它使用由ServiceRoute公开的单个预定义REST服务创建Web应用程序。此应用程序类型依赖于IIS主机(或通常托管的Web服务器),并打开AspNetCompatibility。它不能直接转换为Windows服务中的主机。某些WCF REST功能(WebRouting,输出chache配置文件)取决于AspNetCompatibility,通常在Web服务器外部不可用。

,但如果你不需要这些功能,你可以很容易地在Windows服务主机WCF REST服务。您可以将新项目作为WCF服务库启动,将第二个项目作为Windows服务从库中启动服务。

你不需要从.NET 4.0的任何新的模板来定义WebHttp端点与Windows安全性。这是不够的:

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

通过在你定义默认webHttpBinding配置binding元素省略name。每次用WebHttpBinding定义端点时,都将使用此配置。 StandardEnpoint是WCF 4.0的新功能。它也可以用于这种情况,但它不是必需的。