1

我有一个用 Authenticate 属性标记的服务操作

[Authenticate]
[Route("/route/to/service", "POST")]
public class OperationA: IReturn<OperationAResponse>
{
 ...
}

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

我不使用 IoC 来解析我背后代码中的服务,但我使用这段代码......

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

有什么我想念的吗?

感谢您的关注。

4

1 回答 1

0

只是为了澄清:

我不使用 IoC 来解析我背后代码中的服务,但我使用这段代码......

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

MyService您在这里使用 IOC,即解析来自 ServiceStack 的 IOC的自动连接实例。

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

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

var helloService = AppHostBase.Resolve<HelloService>();
helloService.RequestContext = System.Web.HttpContext.Current.ToRequestContext();
var response = (HelloResponse)helloService.Any(new Hello { Name = "World" });
于 2012-12-06T19:21:44.907 回答