首先,感谢大家与社区分享所有知识。
我目前有一个Silverlight应用程序,它消耗一些WCF服务。这些WCF服务使用自定义授权策略,该策略期望具有角色的Identity可以进行授权。
在这个应用程序中一切正常。我使用WCF创建一个通道,并将Identity从客户端传递到服务器。
当我尝试从另一个ASP Net MVC应用程序使用这些WCF服务时出现问题。我试图在这个新应用程序中复制web.config
,以维护配置并尝试使其更容易。
在这个新的应用程序中,当我查看System.Web.HttpContext.Current.User.Identity
类中的IAuthorizationPolicy
变量时,它是空的,授权失败。
所以我做的下一个测试是在这个新应用程序中托管WCF,以避免站点之间的身份验证。我在网站中执行了FormsAuthentication
并创建了一个用于存储用户信息的Cookie,当我在System.Web.HttpContext.Current.User.Identity
类的HttpModule
类的页面之间导航时,我调用了WCF服务此HTTModule类在System.Web.HttpContext.Current.User.Identity
变量中没有值。
我被困了,因为我不明白这种行为。
如果在我的HttpModule
类中总是返回一个新的固定GenericIdentity
,那么当我使用自己应用程序中托管的WCF服务时,它可以正常工作。
如果我使用原始应用程序中托管的服务,虽然我在GenericIdentity
中返回新的HttpModule
,但它无效。
我已经花了几天时间处理这个问题,所以我需要你的帮助。我读了很多关于WCF架构的内容,但我需要一些人的线索。
提前致谢。