【问题标题】:Getting 404 when deploying ASP.Net MVC on Server 2012 and IIS 8在 Server 2012 和 IIS 8 上部署 ASP.Net MVC 时出现 404
【发布时间】:2017-11-03 02:42:45
【问题描述】:

我已经尝试了所有可以在网上找到的修复方法,但都没有奏效。

我将asp.net 4.5和3.5角色添加到服务器。

我将 runAllManagedModulesForAllRequests 添加到 web.config 中

我从 asp.net 站点安装了 MVC。我不确定还需要设置什么。

这是 web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Redacted" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <customErrors mode="Off" />
    <machineKey validationKey="96820F5717A865002768570C77EC72BBBC16CD2BDBC3D6BD494F4F4734F903FEBDA99E0A694ADB5B2A6D9347FB60BE00F1BF618062DA36C8A378B0B274B80390" decryptionKey="71AA018320CA48F100A58E38285B3AEE7C2E21001C1ASDD1" validation="SHA1" />
    <authentication mode="None" />
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <pages>
      <namespaces>
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="FormsAuthenticationModule" />
    </modules>
        <defaultDocument>
            <files>
                <clear />
                <add value="default.aspx" />
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="index.htm" />
                <add value="index.html" />
                <add value="iisstart.htm" />
            </files>
        </defaultDocument>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <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.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.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="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

【问题讨论】:

  • 您能否添加 404 消息的屏幕截图以及 IIS 安装设置的外观?例如,我的设置如下所示:settings screenshot

标签: c# asp.net-mvc asp.net-mvc-4 iis windows-server-2012


【解决方案1】:

在不知道发出 404 的组件(可能是 IIS 或 ASP.NET)的情况下,我的第一个想法是 .net 没有在 IIS 中注册,至少不是最新版本。如果 IIS 抛出 404,它看起来像这样:http://imgur.com/7crGkNg

如果 ASP.NET 工作正常,404 将如下所示:http://imgur.com/MIVYSNv

如果您从 IIS 获取 404,请尝试重新运行 aspnet_regiis.exe -i。在我的 Windows 8 系统上,路径位于此处:“C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe”

更多细节在这里:http://msdn.microsoft.com/en-us/library/k6h9cz8h(v=vs.100).aspx

【讨论】:

  • 我得到第二个错误。我运行了您建议的更新命令,但仍然得到 404。同一站点在另一台运行 2008r2 的服务器上运行良好,所以我确定这是 IIS 的设置问题。
【解决方案2】:

默认情况下,在 Windows 8 上,IIS 不会安装 ASP.NET,因此请转到“打开/关闭 Windows 功能”并在 IIS 下检查-> 万维网服务-> 应用程序开发功能-> ASP.NET 4.5

这对我有用。

【讨论】:

    【解决方案3】:

    这听起来很基本,如果 runAllManagedModulesForAllRequests 和 IIS 目录权限不能解决您的问题...尝试完全擦除并重新部署站点。

    【讨论】:

      【解决方案4】:

      我必须为 IIS 安装“IIS 客户端证书映射身份验证”角色服务才能清除此错误。我的站点配置了客户端证书身份验证。

      【讨论】:

        【解决方案5】:

        我遇到了和你描述的一样的问题。我在不同的资源上搜索了很长时间,尽我所能。但是解决方法就是这么简单……

        我打开 Global.asax.cs,将代码放在 try_catch 块中的方法“Application_Start(object sender, EventArgs e)”中。然后我将我的项目附加到 w3wp.exe 并在 Global.asax.cs 中放置一个断点。我重建了 webApp 并尝试从浏览器调用我的网站。当我到达断点时,我按下 F5 并在我的 Catch 块中收到错误消息。

        我的问题在于缺少一些 dll,尽管该项目在构建时不会出现任何警告或错误。此外,我还引用了 NPGSQL 和我的其他一些引用 NPGSQL 的 dll。 WebApp 中的 NPGSQL 版本与我其他 dll 中的版本不同。所以这也导致了问题。

        试着调试一下你的web应用的启动,希望对你有帮助。

        【讨论】:

          【解决方案6】:

          检查 IIS 中的站点绑定。确保您没有绑定到可能正在使用的系统端口或其他端口,从而导致冲突。通常,编号较大的端口不太可能被使用。

          端口号分配列表:

          https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

          【讨论】:

            猜你喜欢
            • 2015-03-12
            • 2013-03-07
            • 1970-01-01
            • 2015-07-03
            • 1970-01-01
            • 2016-05-27
            • 1970-01-01
            • 1970-01-01
            • 2011-01-12
            相关资源
            最近更新 更多