[筆記] 設定UrlRoutingModule時發生錯誤

摘要:[筆記] 設定UrlRoutingModule時發生錯誤

在WEB.CONFIG中設定

<system.webserver>

    <modules>

      <remove name="UrlRoutingModule-4.0">

      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule">

    </add></remove></modules>

  </system.webserver>

 

搭配RouteConfig.cs中的設定,可以將網址作出XXX/XXX.html這種效果

 

但是如果該controll有使用了[Authorize]

 

這個Filter可能會造成物件位初始化的錯誤,

 

解決方法有三

第一:在modules中加上下列屬性

<modules runAllManagedModulesForAllRequests="true" >

 

第二:

hlml(或是指定的副檔名)註冊給系統使用

<add modules="IsapiModule" name="(HTML) ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*.html" precondition="classicMode,runtimeVersionv4.0,bitness32" responsebufferlimit="0" scriptprocessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS">

  <add modules="IsapiModule" name="(HTML) ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*.html" precondition="classicMode,runtimeVersionv4.0,bitness64" responsebufferlimit="0" scriptprocessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS">

  <add name="(HTML) ExtensionlessUrlHandler-Integrated-4.0" path="*.html" precondition="integratedMode,runtimeVersionv4.0" type="System.Web.Handlers.TransferRequestHandler" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS">
  </add>
</add>
</add>

參考http://blog.miniasp.com.test.webmatrixhosting.tw/post/2013/06/24/ASPNET-MVC-4-IIS-runAllManagedModulesForAllRequests-ExtensionlessUrlHandler.aspx#continue

 

但是如果網站有使用普通的html檔案,則會發生錯誤。

第三

自己寫登入驗證的流程,不要用[Authorize]