У меня есть веб-приложение ASP.NET, включающее несколько страниц Silverlight.Во-первых, пользователи проходят аутентификацию, используя общую веб-форму 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
Но когда я запускаю свой код, я получаю сообщение об ошибке: Запрос основного разрешения не выполнен.
Есть идеи о том, как его решить?Thaaankkss !!