Я использую устаревшие веб-сервисы .net 2.0 .asmx (пытался убедить их перейти на WCF, но безуспешно).Я пытаюсь найти способ не только использовать собственный заголовок SOAP, но и аутентифицировать пользователя, не имея кода аутентификации в каждой ссылке.
В настоящее время мой веб-сервис выглядит следующим образом:
public WebserviceAuthentication currentUser;
[WebMethod(Description="Returns the logged in users credentials")]
[SoapHeader("currentUser")]
public string HelloWorld()
{
var user = AuthenticateUser(currentUser, WebServiceResources.MEDICAREELIGIBILITY_HELLOWORLD);
return string.Format("{0} {1} {2}", user.User.UserName, user.User.ProviderUserKey, user.AccountId);
}
В идеале я бы изменил код следующим образом:
public WebserviceAuthentication currentUser;
public CustomAuthentication user;
[WebMethod(Description="Returns the logged in users credentials")]
[SoapHeaderAuthentication("currentUser")]
public string HelloWorld()
{
return string.Format("{0} {1} {2}", user.User.UserName, user.User.ProviderUserKey, user.AccountId);
}
SoapHeaderAuthentication прочитает currentUser и подтвердит, что информация является зарегистрированным пользователем.если они есть, вернуть пользовательский объект пользователя и заполнить объект пользователя.Затем я мог бы получить доступ к объекту пользователя из WebService.
Проблема в том, что я не могу расширить SoapHeaderAttribute, потому что это запечатанный класс.