我的Silverlight解决方案中有2个域服务,它们都有RequiresAuthentication属性。当用户转到应用程序并登录时,他们可以调用服务A并且它正常工作但是当用户调用服务B时它会抛出异常Load operation failed for query 'X'. Access to operation 'X' was denied.
如何解决这个问题?
答案 0 :(得分:0)
您需要一个可能不设置了RequiresAuthentication的注释中提到的身份验证服务,除非您希望首先在ASP.NET中进行身份验证,然后为什么要使用该服务?
我按照此处的定义实施了我的服务:http://www.codeproject.com/KB/silverlight/IssueVisionSilverlightPt3.aspx#AuthenticationService
但是ValidateUser(userName, password, out userData)
中不明显的是,userData可以不在此处为空,或FormsAuthentication.Encrypt(ticket)
始终返回null,因此不为Silverlight设置auth cookie以发送到域服务请求。您可以使用Fiddler确定是否正在发送cookie,并且您绝对需要这个以使auth和域服务“相互通信”。
更奇怪的部分是[EnableClientAccess(RequiresSecureEndpoint = true)]
,因为这似乎需要在web.config表单部分中要求SSL = true,并且所有流量必须通过https。对我来说,这意味着在客户端上检测到这一点,然后在>>之前重定向触发任何身份验证。