我想将当前的Windows用户用于我的Silverlight应用程序。使用任何其他应用程序我只能使用WindowsIdentity
,但似乎我需要在WCF中使用ServiceSecurityContext.Current
。我的问题是.Current
出现为null
。
显然这是因为我正在使用的传输模式。我的问题是,如果没有想要使用Https,Silverlight显然不能使用TransportWithMessageCredential
。
所以我尝试使用TransportWithMessageCredential
,我的服务开始说它期待Https,但是正在接收Http。
我在网上浏览过,似乎我需要使用wsHttpBinding(Silverlight不具备这种功能)或某种形式的访问策略来使用带Http的Http(似乎不起作用)。 / p>
当然有更简单的方法吗?
答案 0 :(得分:1)
我设法通过做一些事情来解决这个问题:
1)web.config文件中的<authentication mode="Windows"/>
2)<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
。 aspnetCompatibilityEnabled
在这里很重要。
3)[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
属性。
4)使用HttpContext.Current.User.Identity as WindowsIdentity
获取Windows身份。