2009-05-07 41 views
0

カスタムURL書き換えモジュールを作成して特定のパスを取得し、それらをデータベースからカタログにマップしました。フォルダURLでASP.NET URL書き換えが動作しない

私の記事の一番下にあるリンクに記載されている手法を使用しています。

私は.NET 3.5を使用しています。問題は、元のURLの最後にページ名がある場合にのみ機能しますが、ページ名がオフの場合はハンドラも呼び出されないことです。 だから例えば、URL

http://mysite.com/folder/index.aspx works but 
http://mysite.com/folder/   does not. 

はただフォルダと1は、すべての私のハンドラクラスになることはありません。フォルダを正しく動作させるために何か必要なことはありますか?

http://www.simple-talk.com/dotnet/asp.net/a-complete-url-rewriting-solution-for-asp.net-2.0/

答えて

1

.NET再書き込みを使用する際には、既知の問題です。ワイルドカードマッピングを正しく設定する必要があります。ここでは良いリンクです:

http://devtalk.dk/2007/03/19/Wildcard+Mapping+And+URL+Rewriting+On+IIS7.aspx

別のオプションは、正規表現でIIS ISAPIによって書き換えされます。 私の会社では実際に両方を使用しています。

は、参照のため、このリンクをチェックアウト:

http://www.kowitz.net/archive/2006/09/15/url-rewriting-using-ihttpmodule-vs-isapi-rewrite.aspx

+0

ISAPIは私が推測する必要があるように見えます。 IISの '*'ファイルマッピングが機能していないようです。サーバーはServer 2003 R2のボックスで、以前のIIS(Vista以前のもの)であり、「*」の拡張子を追加することはできません(悪い拡張形式)。これはかなりのオーバーヘッドを追加して、asp dllを通してすべてのファイルを処理するように思えます。 .NETにISAPIを書くためのリンクがありますか?これは、Webプロジェクトのファイルとして行うことができますか、別のdllにコンパイルする必要がありますか? ありがとうございます。 – eidylon

+0

このリンクは有望だと思っていましたが、同じワイルドカードマッピングの問題を抱えているようです。 http://codebetter.com/blogs/karlseguin/archive/2006/05/24/145397.aspx 。 – eidylon

+0

ここにオープンソースがあります: http://www.codeplex.com/IIRF しかし... ISAPIを使用すると、isapi dllにすべてのリクエストが送信されます。.net dllを使用すると、 ISAPIとaspnet_isapiのオーバーヘッドは同じです。 ワイルドカードを設定できない方法はまだわかりません。 http:// peterkellner。net/2008/08/24/urlrewrite-with-aspnet-urlrewriter-wildcard-mapping-iis6-iis7/ – Lucas

0

私はそれを解決するかどうかはわかりませんが、その理由は、IISは、(それがある)ディレクトリとしてそれを扱っているとするフォルダを渡す方法についての知識を持っていないbecausですASP.NET isapiフィルタ.Netハンドラをトリガします。

IIS7でこれを実行して、アクチュアリIISパイプラインにハンドラを挿入することができます。または、「RewriteModuleの使用」の見出しの下で参照した記事の一番下を確認してください。

+0

まあ、私はすでに、彼が指定するように私のHttpModulesセクションでそれを持っています。私が見ることができる唯一のことは、ISAPIフィルタを追加することです。それは拡張されているので、ISAPIハンドラリストにどのように「フォルダ」を追加するかはわかりません。 ブログポストのパラメータの例では、コードを使用していることを正確に考えれば、何とかして可能でなければなりません。 – eidylon

関連する問題