0

拡張機能のないURLを作成する方法が必要です。私のサーバーはIIS6.0バージョン1の共有ホストです。現在、IIS7でのみサポートされているUrlRewriting.Netdllを使用しています。

私の元のURLはabc.xyz.in/Index.aspx?c=comp_Nameです。私の仮想URLはabc.xyz.in/comp_Name.aspxですが、abc.xyz.in/comp_Nameとして使用したいです。

他のモジュールなどを介して可能ですか。私のホストは共有ホストであることに注意してください。そのため、IISを自分で構成することも、管理者に同じように変更するように強制することもできません。

4

3 に答える 3

1

IIS6 (およびそれ以前のバージョン) でのカスタム ルーティングの問題は、.aspx、.ashx、.asmx ファイルを要求しない限り、既定では ASP.Net モジュールが呼び出されないことです。アクセスしようとしていたものをチェックして正しいページを表示するカスタムエラーを使用する解決策がいくつかありますが、それはあまり良い解決策ではありません (しかし、本当にそれについてもっと読みたい場合は、サンプルがありますCodeProject: http://www.codeproject.com/Articles/44475/IIS-vs-ASP-NET-URL-Rewriting )。

私の提案は、Web ホストに ASP.Net のワイルドカード マッピングを追加して、サイトへのすべての着信要求を処理し、適切なルーティング モジュールを記述できるようにすることです。その必要はないかもしれませんが、要求しても害はありません。サイト単位で簡単に設定できます。それが問題にならない場合は、現在の Web ホストにサイトを適応させるのではなく、サイトのニーズに対応できる新しい Web ホストを探す必要があります。

于 2012-05-28T18:56:52.217 に答える
0

始めている場合(またはそうすることがオプションである場合)、問題は、あなた (ホスト) が IIS (6 または 7) に ASP.Net 4 を持っているかどうかです。

拡張子のない URL はASP.Net 4の一部です。つまり、ASP.Netサイト (拡張子のない URL を機能させたい) は ASP.net 4 (v2.x ではない) で実行する必要があります...

ひ...

于 2012-05-28T21:11:43.743 に答える
0

こんにちは、独自の HttpModule を作成する必要があります。これは良い例です(ここからです):そのサイトを見てください。必要なすべての手順が説明されています。

using System;
using System.Web;


public class DavModule : IHttpModule {

    private HttpApplication context = null;

    public void Dispose() {
        context.BeginRequest -= new EventHandler(context_BeginRequest);
    }

    public void Init(HttpApplication context) {
        this.context = context;
        this.context.BeginRequest += new EventHandler(context_BeginRequest);
    }

    void context_BeginRequest(object sender, EventArgs e) {
        HttpApplication app = (HttpApplication) sender;
        app.Response.ContentType = "text/plain";

        if (app.Request.Path.EndsWith("Help"))
            app.Server.Transfer("Help.aspx");
        else {
            app.Response.Write("Path: " + app.Request.Path);
            app.Response.End();
        }
    }
}
于 2012-05-28T18:34:35.433 に答える