2

クエリ文字列からIDを取得し、ユーザーオブジェクトをインスタンス化するIISホストアプリがあります。AppHost.Configure で IoC に UserService を登録します

container.Register(x => new UserService(x.Resolve<IDataContext>()).GetUser()).ReusedWithin(ReuseScope.Request);

私のUserService(これはServiceStackサービスではなく、単なる内部ヘルパーです)は次のようになります

    public class UserService
    {
        public UserService(IDataContext dataContext)
        {
            _dataContext = dataContext;
        }

        public User GetUser()
        {
            var uid = HttpContext.Current.Request.QueryString["$id$"];
            //snip
        }
        //snip
    }

これを自己ホスト型アプリに変更したいので、HttpContext にアクセスできなくなりました。HttpListenerContext を見てきましたが、クラスが注入されているときに何も入力されていないようです。

クエリ文字列からこのクラスにパラメーターを渡す方法について、誰かが光を当てることができますか?

4

1 に答える 1

1

コンストラクター内の依存関係にアクセスすることはできません。また、すべての ServiceStack アクションには Request DTO が必要です。詳細については、New API wikiを参照してください。

Service アクションでは、必要なときにbase.Requestとに簡単にアクセスできます。base.Response

public class MyService : Service
{
    public UserService UserService { get; set; }

    public User Get(MyRequest request)
    {
        var user = UserService.GetUser(base.Request);
        //snip
    }
    //snip
}

注: セルフホスティング用の HttpListenerContext にはシングルトンがないため、IOC ラムダ内からランタイム HTTP リクエストにアクセスすることはできません。

于 2013-04-10T13:07:42.593 に答える