1

認証属性でマークしたサービス操作があります

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

AuthProvider のメソッド IsAuthorized は、REST URL を使用するか、ユニット テスト内で JsonServiceClient を使用してサービスを呼び出すと正しく呼び出されますが、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からの自動配線されたインスタンスを解決しています。

RequestサービスがHTTPまたはオブジェクトを使用しない場合は、Response通常のクラスと同じように扱い、C#メソッドを呼び出すことができます。サービスが機能する場合(認証/登録など)、現在の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 に答える