Вот ситуация. У меня есть webservice (C# 2.0), который состоит из (главным образом) класса, наследующего от System.Web.Services.WebService. Он содержит несколько методов, которые все должны вызвать метод, который проверяет, разрешены ли они или нет.Вызовите определенный метод перед каждым вызовом веб-службы
В основном что-то вроде этого (простите за архитектуру, это просто как пример):
public class ProductService : WebService
{
public AuthHeader AuthenticationHeader;
[WebMethod(Description="Returns true")]
[SoapHeader("AuthenticationHeader")]
public bool MethodWhichReturnsTrue()
{
if(Validate(AuthenticationHeader))
{
throw new SecurityException("Access Denied");
}
return true;
}
[WebMethod(Description="Returns false")]
[SoapHeader("AuthenticationHeader")]
public bool MethodWhichReturnsFalse()
{
if(Validate(AuthenticationHeader))
{
throw new SecurityException("Access Denied");
}
return false;
}
private bool Validate(AuthHeader authHeader)
{
return authHeader.Username == "gooduser" && authHeader.Password == "goodpassword";
}
}
Как вы можете видеть, метод Validate
должен вызываться в каждом методе. Я ищу способ, чтобы иметь возможность вызвать этот метод, сохраняя при этом доступ к заголовкам мыла разумным способом. Я просмотрел события в global.asax
, но я не думаю, что могу получить доступ к заголовкам в этом классе ... Могу ли я?
Не так прямолинейно, как я предполагал. Попытаемся попробовать это сейчас. – 2008-09-25 08:58:35