2015-12-08 44 views
0

我正在部署在IIS 8.5上的舊應用程序上工作,它應該自動顯示default.aspx頁面,但不顯示404錯誤。爲了測試,我在同一臺機器上添加了一個新網站,並上傳了一個空白的default.aspx頁面,並且可以正常工作。當我在新網站中再次粘貼web.config時,又出現同樣的錯誤404。默認文檔由於web.config設置不正確而不工作

我嘗試在web.config中手動添加默認頁面,但同樣的問題。

所以這看起來像web.config文件中的miss配置,你可以看看下面的web.config,讓我知道如果你看到任何問題。

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <sectionGroup name="elmah"> 
     <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" /> 
     <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" /> 
     <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" /> 
     <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" /> 
    </sectionGroup> 
    </configSections> 
    <system.web> 
    <pages enableViewStateMac="false" controlRenderingCompatibilityVersion="4.0" /> 
    <httpRuntime maxRequestLength="2097151" executionTimeout="360" /> 
    <httpHandlers> 
     <add verb="*" path="Test_*.aspx" type="Test.Web.Domain.Abstract.UrlRewriter" validate="false" /> 
    </httpHandlers> 
    <compilation debug="true" targetFramework="4.5"> 
     <assemblies> 
     <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> 
     <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     </assemblies> 
    </compilation> 
    <httpModules> 
     <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> 
     <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 
     <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 
    </httpModules> 
    <customErrors mode="RemoteOnly" defaultRedirect="~/500.aspx"> 
     <error statusCode="404" redirect="~/404.aspx" /> 
     <error statusCode="500" redirect="~/500.aspx" /> 
    </customErrors> 
    </system.web> 
    <system.webServer> 
    <httpErrors errorMode="Detailed" /> 
    <asp scriptErrorSentToBrowser="true" /> 
    <directoryBrowse enabled="true" /> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules> 
     <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" /> 
     <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" /> 
     <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" /> 
    </modules> 
    </system.webServer> 
    <system.webServer> 
    <handlers> 
     <remove name="ScriptResource" /> 
     <add name="*.aspx_*" path="Test_*.aspx" verb="*" type="Events.WebFormHandlerFactory" /> 
     <add name="HTMLHandler" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.5,bitness32" type="System.Web.UI.PageHandlerFactory" /> 
    </handlers> 
    </system.webServer> 
    <system.webServer> 
    <staticContent> 
     <remove fileExtension=".woff" /> 
     <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" /> 
     <remove fileExtension=".ttf" /> 
     <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" /> 
     <remove fileExtension=".svg" /> 
     <mimeMap fileExtension=".svg" mimeType="image/svg+xml" /> 
     <remove fileExtension=".mp4" /> 
     <mimeMap fileExtension=".mp4" mimeType="video/mp4" /> 
    </staticContent> 
    </system.webServer> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.6.4.0" newVersion="5.6.4.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.6.4.0" newVersion="5.6.4.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.6.4.0" newVersion="5.6.4.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.WindowsAzure.MediaServices.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.WindowsAzure.MediaServices.Client.Common.BlobTransfer" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.2.29.0" newVersion="4.2.29.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <elmah> 
    <security allowRemoteAccess="true" /> 
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="SqlCon" /> 
    </elmah> 
    <location path="AAAAA.aspx"> 
    <system.web> 
     <pages validateRequest="false" /> 
     <httpRuntime requestValidationMode="2.0" /> 
    </system.web> 
    </location> 
</configuration> 

在上面的代碼中,我上線懷疑

<handlers> 
     <remove name="ScriptResource" /> 
     <add name="*.aspx_*" path="Test_*.aspx" verb="*" type="Events.WebFormHandlerFactory" /> 
     <add name="HTMLHandler" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.5,bitness32" type="System.Web.UI.PageHandlerFactory" /> 
    </handlers> 

及其runtimeVersion是4.5,這也是靶向框架,但具有scriptProcessor這v4.0.30319聞起來像一個錯誤。

任何輸入,非常感謝。

回答

0

web.config中沒有任何問題,只有在現有Web窗體應用程序中啓用MVC位後纔出現此問題。

MVC應用程序會覆蓋現有的基於Web表單擴展的URL,因此當請求沒有擴展名(.aspx)時,它將請求映射到默認路由,即domain.com/Home/Index,這在我的應用程序中不可用,因此我看到404 Not Found 。

現在爲了設置或防止這種MVC默認值,我們可以使用

routes.IgnoreRoute("");

下面這就像魅力的代碼。

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.IgnoreRoute(""); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

希望這會節省您的時間。

0

你可以試試只有一個system.webServer條目。

+0

我仍然看到相同的問題:( –