簡體   English   中英

如何將處理程序映射設置為IIS 6.0中的目錄?

[英]How do you set handler mapping to a directory in IIS 6.0?

我的開發機上有IIS 7.0,服務器上有IIS 6.0。 在開發機器上,我可以在我的站點中名為/ ViewHtml /的目錄中設置處理程序映射,然后將其映射到asp.net。 在我的global.asax中,我檢查發送到asp.net的/ ViewHtml /的請求,並提供位於此應用程序虛擬目錄之外的相應html文件(Doc,Power Point或Excel文件的html版本)。 我這樣做是因為所有文件都受權限保護,由於可伸縮性,我們不想將這些文件放在數據庫中,並且我需要在服務器上隱藏這些文件的路徑。 所有這些都完全可以在IIS 7.0中正常運行。 盡管我無法將IIS 6.0服務器配置為將所有請求映射到該目錄到asp.net。

有任何想法嗎? 多謝你們?

如果我正確理解了問題,聽起來您需要為虛擬目錄添加“通配符應用程序映射”。 換句話說,您想將所有請求轉發到ASP.NET的ISAPI擴展名的任何文件擴展名。

這樣做,打開您的虛擬目錄的屬性。 在“ 虛擬目錄”選項卡(如果是網站,則為“主目錄”選項卡)上,單擊“ 配置...”按鈕。 在出現的對話框中,單擊底部列表框旁邊的“ 插入...”按鈕。 在此對話框中,選擇“%SYSTEMROOT%\\ Microsoft.NET \\ Framework \\ v2.0.50727 \\ aspnet_isapi.dll”作為可執行文件,並確保取消選中“驗證該文件是否存在”復選框,因為要請求的文件沒有不在您的虛擬目錄中。

我希望這有幫助!

我使用與您使用的配置相同的配置設置了一個Web應用程序,並且也得到了404。我不知道為什么它在IIS 7中可以正常工作,但是這是我必須修復的工作。

創建一個實現System.Web.IHttpHandler類的類。 將代碼從Application_BeginRequest移到IHttpHandler.ProcessRequest的實現中。

現在,您只需要在ASP.NET中注冊HTTP處理程序即可。 為此,請在Web.config中的/configuration/system.web/httphandlers中添加一個條目。

Web.config示例:

...
<httpHandlers>
    <clear />
    <add verb="*" path="*" type="namespace.classname, assemblyname" />
</httpHandlers>
...

該條目告訴ASP.NET通過運行HTTP處理程序中的代碼來處理具有任何擴展名和任何HTTP方法的HTTP請求。 請注意,我還清除了所有先前定義的處理程序(在計算機的web.config中定義)。

請注意,您仍然需要在IIS中配置應用程序映射。

我認為您的問題全與訪問策略有關,您必須確保訪問策略為“讀取”而不是“無”,與“無”的cz,您甚至沒有權限從您的網站讀取文件

暫無
暫無

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

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