IIS7 MVC路由不起作用

时间:2017-09-04 11:23:38

标签: asp.net asp.net-mvc asp.net-mvc-4 routes iis-7

我们公司提供基于MVC的产品(针对v4.5),该产品已停止在客户网站上工作,看似环境问题 - 一个曾经没有任何问题的构建现在提供{{1} }。

认为正在发生什么......

  • 用户访问http://server/AppName
  • 因为它是MVC应用程序,所以应该使用默认路由(403.14 - The Web server is configured to not list the contents of this directory)。
  • 相反,IIS正在寻找默认文档......
  • ...并且,没有找到,它假设用户想要列出目录的内容......
  • ...未启用,因此会抛出403.14。

到目前为止我尝试了什么......

  • 直接访问路线..导致404错误。所以我很漂亮 确定IIS没有意识到它应该使用路由。
  • 使用Reports/Index向IIS注册ASP.Net。这是从aspnet_regiis文件夹完成的,因为......
    • 操作系统是64位 - Windows Server 2008(标准版没有Hyper-V)
    • IIS为64位 - 尽管Framework64为真
  • Checked AppPool的目标是框架的第4版 - 它是。
  • 将AppPool模式更改为Enable 32-Bit Applications - 非常确定应该将其整合,但值得将其排除在外。现在回到Classic
  • Integrated中已确认RunAllManagedModulesForAllRequests已设为true
  • 符合web.config <system.webServer>部分中定义的已审核权限条件 - 它们是。
  • 创建了最简单的MVC应用程序并进行了部署 - 同样的问题。
  • 以管理员身份运行命令shell,使用web.config取消注册ASP.Net,并使用aspnet_regiis -ua重新注册。我们遇到了一些权限问题 - aspnet_regiis -enable -i目录丢失了但是一旦它们出现了地址,我们又回到了同样的错误。
  • 添加了一个简单的Temporary ASP.NET Files - 如果存在,则会在响应http://server/AppName请求时提供此信息。

我的想法很简洁,所有google点击都提示上面的一些组合 - 或启用目录浏览(我认为这只是一个症状而不是根本原因)。

另外,不确定它是否相关,但IIS中的应用程序可用的可配置元素数量似乎略低于我的预期......

IIS Options

8 个答案:

答案 0 :(得分:0)

您可以尝试使用Enabling目录浏览。 假设您使用的是Windows Server 2012或Windows Server 2012 R2

  1. 在任务栏上,单击“服务器管理器”。
  2. 在“服务器管理器”中,单击“管理”菜单,然后单击“添加角色” 和功能。
  3. 在“添加角色和功能”向导中,单击“下一步”。选择 安装类型,然后单击下一步选择目标服务器和 单击“下一步”。
  4. 在“服务器角色”页面上,展开“Web服务器(IIS)”,展开“Web” 单击服务器,展开Common HTTP Features,然后选择Directory 浏览。单击“下一步”。
  5. 在“选择功能”页面上,单击“下一步”。在确认安装上 选择页面,单击“安装”。在“结果”页面上,单击“关闭”。
  6. 如果您使用Windows PC,请在命令提示符中尝试此操作,如下所示:

    1. 转到C:\Program Files\IIS Express
    2. 然后按Enter:appcmd set config /section:system.webServer/directoryBrowse /enabled

答案 1 :(得分:0)

您是否检查过用户正在运行的应用程序池进程?我认为你的网站需要运行权限才能执行.net库,我看到这只是因为看似没有理由而改变(可能与对系统的过度更新有关)。

enter image description here

答案 2 :(得分:0)

也许这是你的情况https://forums.iis.net/t/1157304.aspx

  

SQL Server Reporting Services创建一个名为Reports by的文件夹   如果您在IIS上安装它,则为default。如果您安装SQL 2008然后   Reporting Services不需要使用IIS,而是尝试使用IIS   使用HTTP.Sys服务保留URL。

     

我相信这是你所看到的冲突的原因。你是什​​么   可以尝试更改Reporting Services通过SQL使用的URL   服务器配置向导。

我也找到了

  

SQL Server的报表管理器可以使用报表路径http://<server name>/reports   Configure a Native Mode Report Server for Local Administration (SSRS)

答案 3 :(得分:0)

我认为问题是尚未安装的IIS功能。我在Windows Pro中经常遇到这种问题。确保打开Internet信息服务下的每个功能 - &gt;全局服务,因为默认情况下IIS配置为使用WebForms。因此可能还有一些功能尚未安装使用MVC,尤其是ISAPI过滤器。就我而言,这就是解决方案。我希望它有所帮助。

答案 4 :(得分:0)

使用VS 2017&amp; ASP.NET MVC。 长时间没有任何问题地工作该项目,但突然之间路由开始出现行为不端的问题。停止了工作。

所以我更改了项目属性页面中的端口&amp;它开始工作了。

我真的不知道港口和港口之间的关系是什么? MVC路由模块。如果有所帮助,别人就可以启发。

答案 5 :(得分:0)

我遇到了同样的问题,我刚从IIS中的默认网站创建了一个应用程序池,并停止了默认网站。有了这种差异,您将没有应用程序池的路径

答案 6 :(得分:0)

我知道这个问题已经存在很长时间了,但是最近我也遇到了同样的问题。我已经尝试了每个单独的配置,就像@amcdermott一样,但是解决问题的唯一方法是重新安装.NET Framework

我的应用程序是在.NET Framework 4.5.2下构建的。应用程序服务器安装了4.6.1和4.5.2版本。因此,我卸载了所有框架版本并安装了所需的版本。

如果要尝试此解决方案,请确保没有其他应用程序使用更高版本的.NET Framework。

答案 7 :(得分:-1)

以下是我在Microsoft official site上找到的一些引述,我认为这可能有所帮助:

适用于网站管理员

出现此问题的原因是网站未启用“目录浏览”功能,并且未配置默认文档。要解决此问题,请使用以下方法之一:

方法1:启用IIS中的目录浏览功能(推荐)

要解决此问题,请按照下列步骤操作: 启动IIS管理器。为此,请单击“开始”,单击“运行”,键入inetmgr.exe,然后单击“确定”。 在IIS管理器中,展开服务器名称,展开网站,然后单击要修改的网站。 在“功能”视图中,双击“目录浏览”。 在“操作”窗格中,单击“启用”。

方法2:添加默认文档

要解决此问题,请按照下列步骤操作: 启动IIS管理器。为此,请单击“开始”,单击“运行”,键入inetmgr.exe,然后单击“确定”。 在IIS管理器中,展开服务器名称,展开网站,然后单击要修改的网站。 在“功能”视图中,双击“默认文档”。 在“操作”窗格中,单击“启用”。 在“文件名”框中,键入默认文档的名称,然后单击“确定”。

方法3:在IIS Express中启用“目录浏览”功能

注意此方法适用于在使用IIS Express时遇到问题的Web开发人员。

为此,请按照下列步骤操作: 打开命令提示符,然后转到计算机上的IIS Express文件夹。例如,在命令提示符中转到以下文件夹: C:\ Program Files \ IIS Express 键入以下命令,然后按Enter键: appcmd set config / section:directoryBrowse / enabled:true