【问题标题】:Deploying a .NET MVC web application to a subdirectory in IIS将 .NET MVC Web 应用程序部署到 IIS 中的子目录
【发布时间】:2012-05-29 14:46:57
【问题描述】:

我想在 IIS 中创建一个包含站点的 Web 应用程序,然后创建一个子目录(虚拟目录或另一个 Web 应用程序),其中包含一个 .NET MVC 应用程序并根据需要配置路由。

由于我的 MVC 应用程序相当简单,我只需要一个控制器,所以我希望 URL 如下:

http://mysite.com/mvcapp/

将映射到我的应用程序的 Home 控制器。这似乎应该很容易实现,但实际上设置它似乎会导致错误,例如:

HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.

如果有人对此类问题有任何经验,我们将不胜感激!

【问题讨论】:

    标签: asp.net-mvc iis asp.net-mvc-routing


    【解决方案1】:

    听起来您没有将文件夹设置为运行正确版本的 asp.net 的应用程序。你会怎么做,取决于 IIS 的版本,你是否可以访问 IIS 管理器等等......

    【讨论】:

    • 感谢您的建议。我拥有对服务器的完全访问权限。这个问题实际上是一个路由问题。应用程序池正在运行正确版本的 .NET。
    • @rwbutler - 这不太可能是路由问题。您得到“无法列出目录内容”的事实意味着 .NET 甚至没有被执行。
    【解决方案2】:

    检查一些细节

    • 是否正在运行具有正确应用程序池配置到目标框架的站点? (v4.0 猜的)

    查看 iis 上框架的注册,有时需要注册(再次)

    • 键入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\ 类型

    • aspnet_regiis.exe -ir

    记得以管理员身份运行 cmd

    【讨论】:

    • 这些方面的一切都设置正确,我认为主要是路由问题。
    • 但是如果路由问题,应该操作任意url,假设你使用默认路由映射{controler}/{action}应该操作mysite.com/home/index
    • 查看运行应用池的用户有权限
    • 如果启用了 4.0 应用程序池。
    【解决方案3】:

    我们遇到了同样的问题。该应用程序在开发机器上运行良好。它可以作为开发服务器上的默认应用程序正常工作。将应用程序移动到 IIS 服务器上的另一个站点,我们得到 403 错误。我们检查了权限 - 一切都很好。

    我们在 _BaseLayout.cshtml 中添加了以下内容:

    <script>
            var SitePath = '@Url.Content("~")';
    </script>
    

    js 中的每个调用和每个锚点 href 都预先添加了 SitePath。

    这使代码工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多