簡體   English   中英

如何在ASP.Net和IIS6中處理無擴展URL

[英]How to deal with extensionless Url in ASP.Net and IIS6

我需要一種方法來編寫無擴展名的URL。 我的服務器是IIS6.0版本1的共享主機。當前,我使用的是UrlRewriting.Net dll,它僅在IIS7上支持。

我的原始網址是abc.xyz.in/Index.aspx?c=comp_Name; 我的虛擬網址是abc.xyz.in/comp_Name.aspx,但我希望它是abc.xyz.in/comp_Name

是否可以通過任何其他模塊或任何其他方式。 請注意,我的主機是共享主機。 因此,我不能自己配置IIS或強制管理員對其進行修改。

IIS6(及更早版本)中的自定義路由問題在於,默認情況下,除非您要求提供.aspx,.ashx,.asmx文件,否則它們不會調用ASP.Net模塊。 有一些使用自定義錯誤的解決方案,該錯誤會檢查您嘗試訪問的內容,然后顯示正確的頁面,但這並不是一個很好的解決方案(但是如果您真的想了解更多信息,請查看示例在CodeProject上: http : //www.codeproject.com/Articles/44475/IIS-vs-ASP-NET-URL-Rewriting )。

我的建議是讓您的虛擬主機為ASP.Net添加一個通配符映射,以便它處理到您站點的所有傳入請求,以便您可以編寫適當的路由模塊,雖然它們不一定必須這樣做,但是在詢問中沒有任何危害,它可以輕松地在現場進行設置。 如果這是不可能的,那么您可能應該尋找一個可以滿足您站點需求的新虛擬主機,而不是使您的站點適應當前的虛擬主機。

嗨,您需要編寫自己的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();
        }
    }
}

如果您剛開始(或者這樣做是一種選擇),問題就變成您(您的主機)是否在IIS(6或7)上具有ASP.Net 4。

無擴展名的URL是ASP.Net 4的一部分-這意味着您的ASP.Net站點(您希望無擴展名的URL工作)必須在ASP.net 4(而不是v2.x)上運行...

嗯...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM