【发布时间】:2011-08-09 14:40:26
【问题描述】:
我有一个包含一些 silverlight 页面的 ASP.NET Web 应用程序。首先,用户使用通用的 ASP.NET 网络表单进行身份验证。
这将是典型的代码:
FormsAuthentication.SetAuthCookie(this.txtUsername.Text, false);
FormsAuthentication.RedirectFromLoginPage(this.txtUsername.Text, false);
Response.Redirect("~/Private/Index.aspx");
接下来,用户导航到包含 Silverlight 页面的页面。从那个 silverlight 页面,我需要安全地调用一些 WCF 服务。
服务包含以下代码:
[ServiceContract(Namespace = "http://mydomain")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class ServiceWCF
{
public ServiceWCF()
{
System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
Thread.CurrentPrincipal = HttpContext.Current.User;
}
[OperationContract]
[PrincipalPermission(SecurityAction.Demand, Authenticated = true)]
public List<Data> GetData()
{
// do things
}
}
这就是我从 silverlight 客户端调用该方法的方式:
MyWCFReference.ServiceWCFClient proxy = new MyWCFReference.ServiceWCFClient();
proxy.GetDataCompleted += new EventHandler<MyWCFReference.GetDataCompletedEventArgs>(proxy_GetDataCompleted);
proxy.GetDataAsync();
我按照这篇文章来保护我的网络服务: http://netpl.blogspot.com/2010_04_01_archive.html
但是当我运行我的代码时,我得到了错误:Request for principal permission failed.
知道如何解决它吗?啊啊啊!!
【问题讨论】:
标签: asp.net silverlight wcf security