Global.asaxが無視される
ASP.NETでWEBアプリを作っています。言語はVBです。
クエリ文字列つきアドレスを固定アドレスに見せかけるロジックを使いたいと思い、
Global.asaxにそのコードを書きました。
※ ttp://aaa/details.aspx?A=1&B=2&C=3&D=4&E=5 を、
ttp://aaa/details/1-2-3-4-5 と書いてもアクセスできるような仕組みのことです
開発環境はMicrosoft visual web developer 2008 expressです。
しかし、web developer 2008でデバッグした際にはきちんと動いてくれるのですが、
ソースを本番用のWEBサーバーに置いて details/1-2-3-4-5 アドレスにアクセスすると404エラーとなります。
どこが悪いのでしょうか?
以下、Global.asaxのソースを書きます。
***************
<%@ Application Language="VB" %>
<script runat="server">
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)
Dim curPath As String = Request.Path.ToLower()
Dim newPath As String = ""
Dim fileArray As Array
'拡張子がaspx
If (System.IO.Path.GetExtension(curPath) = "") Then
Dim fileName As String = System.IO.Path.GetFileNameWithoutExtension(curPath) 'ファイル名取得
Dim fileDir As String = System.IO.Path.GetDirectoryName(curPath) 'ディレクトリ名取得
'分岐させる必要がある場合は、分岐条件を書く
fileArray = Split(fileName, "-")
If fileArray.Length = 5 Then
fileName = "A=" & fileArray(0) & "&B=" & fileArray(1) & "&C=" & fileArray(2) & "&D=" & fileArray(3) & "&E=" & fileArray(4)
End If
'飛ばし先のパス
newPath = String.Format("{0}.aspx?{1}", fileDir, fileName)
End If
'ReWrite the URL
If (newPath <> "") And InStr(curPath, "index.aspx") = 0 And InStr(curPath, "details.aspx") = 0 Then
Context.RewritePath(newPath)
End If
End Sub
</script>
***************
よろしくお願いします。
お礼
どうもありがとうございます。 色々いぢっていたら出来るようになりました。 ただ、どこでそうなったのかが今不明です(汗