我有一个使用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);
我有什么遗失的吗?
感谢您的关注。
答案 0 :(得分:1)
只是为了澄清:
我不使用IoC来解决我的代码中的服务,但我使用此代码......
MyService service = AppHostBase.Instance.Container.TryResolve<MyService>();
您正在使用IOC,即从ServiceStack的IOC解析MyService
的自动连线实例。
如果您的服务没有使用HTTP Request
或Response
对象,那么您可以将其视为任何普通类并调用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" });