【发布时间】:2011-04-09 09:32:57
【问题描述】:
DomainService1 是作为 SOAP 服务公开的 RIA 域服务。此服务通过使用 [RequiresAuthentication] 和 [RequiresRole("xyz")] 属性得到保护。
在 web.config 中启用了 roleManager 并将身份验证模式设置为 Forms。
测试客户端使用以下代码进行身份验证并调用远程服务操作:
var auth = new myAuth.AuthenticationDomainServiceSoapClient();
var svc = new mySvc.DomainService1SoapClient();
try
{
string myCookie;
using (new OperationContextScope(auth.InnerChannel))
{
var user = auth.Login(svcUser.Text, svcPass.Text, false, string.Empty);
var res = (HttpResponseMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpResponseMessageProperty.Name];
myCookie = res.Headers[HttpResponseHeader.SetCookie];
}
using (new OperationContextScope(svc.InnerChannel))
{
var octx = OperationContext.Current;
HttpRequestMessageProperty request = new HttpRequestMessageProperty();
request.Headers["Cookie"] = myCookie;
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = request;
var results = svc.GetItems();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
我可以看到对 auth.Login 的调用实际上返回了正确的用户,并且在该对象中我可以看到角色设置正确。但是,对 GetItems 的调用失败并引发“拒绝访问操作”的异常。
我是否忽略了什么?你能看出我遗漏了什么明显的东西吗?
提前致谢,
干杯, 詹卢卡。
[编辑] 我想在 EventLog 中添加它,我得到了这个: 请求的表单身份验证失败。原因:提供的票证无效。
知道原因吗?
干杯。
【问题讨论】:
标签: c# silverlight wcf ria