5

自己ホスト型 MVC WebAPI からクエリ文字列にアクセスするにはどうすればよいですか?

Current が空 (別名 null) であるため、次の呼び出しは NRE で失敗しました。

System.Web.HttpContext.Current.Request["myQuery"]

を介してオブジェクトのインスタンス化を制御したいので、コントローラーの外部の現在のコンテキストにアクセスする必要があります。DI。例えば。

        container
            .RegisterType<MyObject>(
                new InjectionFactory(
                    uc =>
                        new MyObject(
                            System.Web.HttpContext.Current.Request["myParam"]) //This failed.
                    ));

上記の NRE が原因で、ControllerApi コード内からの呼び出しにcontainer.Resolve<MyObject>()失敗しました。

4

2 に答える 2

11

System.Web.HttpContext.CurrentWeb APIでは実際に使用しないでください。これは Web ホストを使用している場合にのみ有効であり、実際には従来の理由でのみ存在します。コンテキスト情報はHttpRequestMessage.Propertiesコレクションに隠されています。

Web API がテスト容易性を向上させる方法の 1 つは、静的プロパティへの依存を取り除くことです。

インスタンスの解決とパラメーターの受け渡しを処理する方法があります。この質問を参照してくださいUnity Application Block, How pass a parameter to Injection Factory?

于 2013-01-16T01:38:52.713 に答える
6

自己ホスト型プロジェクトでは HttpContext.Current を使用できません

参照: HttpSelfHostServer および HttpContext.Current

于 2013-01-16T01:28:37.487 に答える