在WCF / Silverlight 4中使用ServiceSecurityContext.Current

时间:2011-04-04 15:31:26

标签: c# silverlight wcf

我想将当前的Windows用户用于我的Silverlight应用程序。使用任何其他应用程序我只能使用WindowsIdentity,但似乎我需要在WCF中使用ServiceSecurityContext.Current。我的问题是.Current出现为null

显然这是因为我正在使用的传输模式。我的问题是,如果没有想要使用Https,Silverlight显然不能使用TransportWithMessageCredential

所以我尝试使用TransportWithMessageCredential,我的服务开始说它期待Https,但是正在接收Http。

我在网上浏览过,似乎我需要使用wsHttpBinding(Silverlight不具备这种功能)或某种形式的访问策略来使用带Http的Http(似乎不起作用)。 / p>

当然有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

我设法通过做一些事情来解决这个问题:

1)web.config文件中的<authentication mode="Windows"/>

web.config文件中的

2)<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />aspnetCompatibilityEnabled在这里很重要。

我的WCF服务类上的

3)[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]属性。

4)使用HttpContext.Current.User.Identity as WindowsIdentity获取Windows身份。