从后面的ASP.NET代码调用服务时,不调用ServiceStack AuthProvider IsAuthorized

时间:2012-12-06 15:50:48

标签: authorization servicestack

我有一个使用Authenticate属性

标记的服务操作
[Authenticate]
[Route("/route/to/service", "POST")]
public class OperationA: IReturn<OperationAResponse>
{
 ...
}

当我使用REST URL调用服务或在单元测试中使用JsonServiceClient时,正确调用AuthProvider的方法IsAuthorized,但如果我从后面的ASP.NET代码(而不是MVC控制器)调用服务,则不会调用该方法。 / p>

我不使用IoC来解决我的代码中的服务,但我使用此代码......

MyService service = AppHostBase.Instance.Container.TryResolve<MyService>();
service.Post(operationA);

我有什么遗失的吗?

感谢您的关注。

1 个答案:

答案 0 :(得分:1)

只是为了澄清:

  

我不使用IoC来解决我的代码中的服务,但我使用此代码......

MyService service = AppHostBase.Instance.Container.TryResolve<MyService>();

您正在使用IOC,即从ServiceStack的IOC解析MyService的自动连线实例。

如果您的服务没有使用HTTP RequestResponse对象,那么您可以将其视为任何普通类并调用C#方法。如果该服务(例如Auth / Registration),那么您还需要注入当前的HTTP请求上下文。

CustomAuthenticationMvc UseCase project有一个如何执行此操作的示例:

var helloService = AppHostBase.Resolve<HelloService>();
helloService.RequestContext = System.Web.HttpContext.Current.ToRequestContext();
var response = (HelloResponse)helloService.Any(new Hello { Name = "World" });