2013-05-29 30 views
0

我試圖重寫的.aspx頁面的URL,但我覺得任何時候都這樣的錯誤:URL重寫

錯誤500.23:一個ASP.NET HttpHandlers的配置不以管理管道模式應用。

前提:我使用的Visual Studio 2012和C#

web.config文件:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.web> 
     <httpHandlers> 
      <add verb="*" path="viaggi/*.aspx" type="mioRewrite, mioRewrite"/> 
     </httpHandlers> 
     <compilation debug="true" targetFramework="4.5" /> 
     <httpRuntime targetFramework="4.5" /> 
    </system.web> 
    <appSettings> 
     <add key="strConn" value="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\db_viaggi.mdf;Integrated Security=True" /> 
    </appSettings> 
</configuration> 

類mioRewrite由類繼承IHttpHandlerFactory

public class mioRewrite : IHttpHandlerFactory 
{ 
    public IHttpHandler GetHandler(HttpContext context, string requestType, string URL, string pathTranslated) 
    { 
     classe HttpContext 
     context.Items["fileName"] = Path.GetFileNameWithoutExtension(URL).ToLower(); 

     return PageParser.GetCompiledPageInstance(URL, context.Server.MapPath("viaggi.aspx"), context); 
    } 

    public void ReleaseHandler(IHttpHandler handler) { } 
} 

我已經使用這種方法,因爲有些樣本談論它。

我該怎麼做才能解決這個錯誤,並且創建一個URL重寫方法?

回答

2

錯誤給你提供了線索。它不需要在集成模式下運行IIS,而需要以經典模式運行。

有趣的是,這是我公司與微軟公司打開票的問題。 IIS工程師證實,它似乎是一個錯誤,無法提供解決方案。如果使用無擴展路由並重寫規則,則必須以經典模式離開IIS。

如果IISExpress運行,而不是完整的IIS,你仍然可以改變到經典模式通過以下步驟您的應用程序:

  1. 點擊在Solution Explorer
  2. 按F4 Web項目獲得要顯示的屬性頁面。您不需要完整的多標籤屬性頁面,而是需要小屬性窗口。
  3. 找到「託管管道模式」下拉菜單,並更改爲「經典」
+0

在那裏我可以改變集成模式爲經典模式? –

+0

@GianmarcoSpinaci我用IISExpress指令更新了我的答案 –