[seasar-dotnet:1891] Re: URLを省略した場合WebフォームにDIされない

Takafumi Yoshida [E-MAIL ADDRESS DELETED]
2010年 12月 13日 (月) 10:42:39 JST


いつもお世話になります。吉田(zephiransas)です。

2010年12月10日18:30 kubo <[E-MAIL ADDRESS DELETED]>:
> 自分はその機能使ったことないのですが、
> 取り急ぎ、コメントできることだけ。
>
>> <component name="/hoge/Default.aspx" instance="outer" />
>
>> <component name="/hoge/" instance="outer" />
> <component name="/hoge/Default.aspx" instance="outer" />
> というように二つ定義してみたらどうなるでしょうか?

結論から言うとこれはNGでした・・・

> S2HttpModule の context_AcquireRequestState() が
> その機能の部分のコードだとすると、
> HttpApplication.Request.Path に合致するコンポーネントが
> 定義されていれば InjectDependency() と呼び出しているので、
> 試してみる価値はあるのかなと。

S2HttpModuleを確認してみたのですが、どうやら /hoge/でアクセスした場合、
S2HttpModule#context_AcquireRequestState
では
string componentName = ha.Request.Path;
が/hoge/default.aspxになっているようです。

ひとまず、diconファイルに
<component name="/hoge/default.aspx" instance="outer" />
<component name="/hoge/Default.aspx" instance="outer" />
と定義して、うまくDIされることを確認しました。

> 逆に、もしそれで動くようであれば、
> S2HttpModuleをアプリで独自に拡張して、
> (private になってるので、独自の HttpModuleを作って)
> /hoge/ の場合に /Default.aspx として処理するなどの
> 回避ができるようになるかもしれません。

そうですね。後でS2HttpModuleを変更してみます。
ありがとうございました。


seasar-dotnet メーリングリストの案内