投稿を表示しています。投稿を表示しています。APIでのSession利用いやもうまじで。そんなことしなくていいと思うんですけど。ステートレスでやればいいと思うんですけど。Overflow普通にやるとApiControllerってHttpContext.Curret.Sessionはnullですね。API利用時にRouteに登録するHttpControllerRouteHandlerのGetHttpHandlerでは、IRequiresSessionStateインターフェース指定のないHttpControllerHandlerが使われているからです。それでいいと思います。しても使いたい、っていうなら、そーですね。IRequiresSessionStateを付けたものを用意しましょう。}}このHttpControllerRouteHandlerをRouteTable登録に利用する。SessionHttpControllerRouteHandler()));これだけ。APIのデフォルトプロジェクトテンプレートで作成したHomeControllerのIndexでSessionに値を入れて、ValuesControllerのGetで参照してみる。};}実行して、/api/valuesにアクセスしてみる。ちなみにLinqToEntitiesDataControllerはAreaRegistrationだから、そっちでRouteTableに登録しましょう。いうか、是非使わないような設計で。最近全然遊んでないなー、と思って。ソースもダウンロードできるんだし、まずはApiControllerのアクションルーティング(どうやってActionを特定してるのか)を、ソースを見つつ確認してみようかと思い立ちました。言いつつも、すでにドキュメントがあったりするので、わざわざソース見なくてもいいじゃないかという、突っ込みは極力お控え願いたいところです。Siteソースを見て確認するといっても、とっかかりがないとどこから見ていいのかわからないですよね。MVCは昔からActionの特定に使うクラスがあります。ActionSelector。Apiだとしても同じ名前で実装してると思うので、まずはActionSelectorで検索。System.Web.Http配下にあるはず。なんでって、System.Web.MvcだとMVCのActionSelectorになっちゃって、ApiContoller用じゃないっていうのと、今回aspnetwebstackとして取り込んだ名前空間がSystem.Web.HttpとSystem.Net.Httpらへんだから。System.Web.Http配下にApiControllerActionSelectorっていうクラスがいます。これを使ってActionの特定をしてるんでしょーね。IHttpActionSelectorインターフェースを実装してるクラスになるから、インターフェース定義を見てみる。SelectActionが探す実体っぽいっすね。