【问题标题】:Razor for ASP.NET WebPages and IIS用于 ASP.NET 网页和 IIS 的 Razor
【发布时间】:2011-06-18 19:28:10
【问题描述】:

我正在尝试使用 razor 语法的 ASP.NET 网页,因此我创建了一个示例站点。如果我在 WebMatrix 中查看站点或使用 VisualStudio(在浏览器中查看)一切正常。当我尝试创建 IIS 站点时,我在尝试访问任何 .cshtml 文件时收到 404 错误。常规 html 文件可从该站点工作。它设置为 .net 4 集成。我用谷歌搜索了一个小时,没有运气。

【问题讨论】:

  • 您使用的是什么版本的 IIS?
  • 请将 web.config 添加到您的问题中。在解释此配置文件时,IIS 和 ASP.NET 开发服务器之间存在一些棘手的差异。
  • 这是在您自己的机器上运行的本地 IIS 实例吗?如果它是远程的,那么它是否安装了 ASP.NET WebPages?
  • 当您说收到 404 请求 .cshtml 文件时,您是否将文件扩展名包含在请求中? (例如,mysite/app/test.chstml 与仅 mysite/app/test)

标签: iis razor webmatrix asp.net-webpages


【解决方案1】:

可能是您刚刚将 MVC 应用程序的文件复制到 IIS 的目录(或虚拟目录)中?

为了让您的 ASP.NET MVC 应用程序正常工作,您需要在 IIS 管理器中配置一个 Web 应用程序(右键单击“默认网站”并选择“添加应用程序”)。然后将你的应用部署到刚刚创建的应用目录中。

【讨论】:

  • 它不是 MVC 应用程序...ASP.NET WebPages。它应该位于站点的根目录而不是子文件夹。
  • IIS 仍然需要知道它是一个应用程序(相对于静态内容),以便它可以发送到 .NET 运行时。尝试“添加应用程序”并与设置为 .NET 4 Integrated 的应用程序池关联
  • 根目录默认应该是一个应用程序,虽然我不知道你如何检查。但我同意 Taylor 的观点:您需要在 IIS 中注册 .NET 4(从 .NET 4 目录运行 aspnet_regiis)并且它需要处于集成(而不是经典)模式。还要检查 web.config 中是否有
  • 我还有其他几个运行良好的 .net 4 集成站点...但是我重新运行了 aspnet_regiis...没有运气。我也确实将 runAllManagedModulesForAllRequests 设置为 true。
【解决方案2】:

我们在我的公司遇到了完全相同的问题。为了让它工作,我们必须进行完整的 .Net 4 安装,并且页面可以正确提供。

【讨论】:

    【解决方案3】:

    检查“.cshtml”是否在站点内正确映射

    属性 -> 主目录 -> 配置... -> 映射

    我的映射到:

    c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll

    【讨论】:

      【解决方案4】:

      这是不适用于 .NET core 或 .NET 5 网站的剃须刀页面的热门话题。

      我喜欢在 IIS 中运行本地开发,因为它反映了生产。当设置一个新项目时,我像往常一样在 IIS 中设置它,但得到一个 404。所有先决条件都已安装,我什至还有其他 .NET 5 razorpage 站点正在运行,所以知道这是一个项目设置。

      对我来说修复是编辑 Properties\launchSettings.json(或通过 GUI 项目 > ProjectNameHere 属性 > 调试选项卡进行编辑)

      删除除以我的项目“ProjectNameHere”命名的配置文件之外的所有配置文件 有以下设置:

        "commandName": "IIS",
        "launchBrowser": false,
        "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Development",
          "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
        },
        "dotnetRunMessages": "true",
        "applicationUrl": "https://dev.projectnamehere.com"
      
      1. 然后保存并按 F5 或工具栏中的“调试”按钮。
      2. 网站现在可以在https://dev.projectnamehere.com 上运行
      3. 停止调试
      4. 像普通网站一样点击https://dev.projectnamehere.com
      5. 进行剃须刀页面更改,正常刷新浏览器页面,查看更改

      注意:我编辑我的 C:\Windows\System32\drivers\etc\hosts 文件以添加 127.0.0.1 dev.projectnamehere.com 并使用在线工具为我安装的域创建自签名 TLS 证书,以使所有工作正常就像生产一样。

      【讨论】:

        猜你喜欢
        • 2011-10-09
        • 2016-07-09
        • 1970-01-01
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-28
        • 1970-01-01
        相关资源
        最近更新 更多