У меня есть приложение Asp.net с аутентификацией в режиме форм
<authentication mode="Forms">
<forms loginUrl="Login.aspx" />
</authentication>
Я также создал веб-сервис с поддержкой Ajax для поддержки функции голосования на странице.
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="VoteServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="VoteService">
<endpoint address="" behaviorConfiguration="VoteServiceAspNetAjaxBehavior"
binding="webHttpBinding" contract="VoteService" />
</service>
</services>
в реализации сервиса, мне нужно получить удостоверение asp, чтобы выяснить, кто голосует ...
[OperationContract]
public int VoteForComment(Guid commentId)
{
string UserName = ServiceSecurityContext.Current.PrimaryIdentity.Name;
//...
}
Но даже после входа в aspприложение, ServiceSecurityContext.Current является нулевым.
Можно ли настроить веб-сервис таким образом, чтобы он мог использовать идентичность asp?Альтернативно, возможно ли определить текущего пользователя другим способом?
Редактировать Оказывается, действительно легко, aspNetCompatabilityEnabled = "true" означает, что веб-сервис имеет доступ ко всемнормальное состояние, доступное в Asp.Net, мне просто нужно было использовать пространство имен System.Web .... System.Web.HttpContext.Current.User.Identity.Name