2014-02-27 63 views
3

這種情況是,我希望所有的文件類型都由指定的dll 來處理,除了'aspx'文件在asp.net web.config中,如何配置httphandlers?

但我不知道如何編輯配置文件。如下:

<system.web> 
    <httpHandlers> 
     <add verb="*" path="*" type="My.Handler" /> 
    </httpHandlers> 
</system.web> 

所有的請求將由My.Handler處理。如何使aspx文件正常訪問?

+0

您是否收到任何錯誤? – shanish

+0

什麼樣的錯誤?沒有錯誤。 –

+0

你真的在運行IIS6還是在經典模式? – MikeSmithDev

回答

2

只是一個猜測,但嘗試了一個後加入這個你想出了:

<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/> 
+0

它不起作用 –

+1

好吧,這是一個無賴 –

+0

@roast_soul定義「不起作用」。因爲你導航到「/」,它沒有工作嗎?如果導航到「/default.aspx」,會發生什麼情況? – MikeSmithDev

4

我有「解決」,但它是一種「哈克」(我只測試它在本地以及)...


1.創建下面的類:

public class PassThroughAspxHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     var pageInstance = PageParser.GetCompiledPageInstance(context.Request.AppRelativeCurrentExecutionFilePath, 
                  context.Request.PhysicalApplicationPath + context.Request.Path, 
                  context); 
     pageInstance.ProcessRequest(context); 
    } 


    public bool IsReusable 
    { 
     get { return false; } 
    } 
    } 

2項添加到下方的web配置: (這部分是IIS7集成的應用程序池,它會略有不同,如果你使用的是經典的應用程序池):

<system.webServer> 
    <handlers> 
     <add verb="*" path="*.aspx" 
     name="PassThroughAspxHandler" 
     type="YourNameSpaceHere.PassThroughAspxHandler"/> 
    </handlers> 
    </system.webServer> 
1

試試這個,添加一些對羅伯特的職位

<add verb="*" path="*.aspx" type="Your handler class name"/> 

this link