【问题标题】:Deploy asp.net mvc website to iis 8将 asp.net mvc 网站部署到 iis 8
【发布时间】:2016-05-27 11:03:39
【问题描述】:

在使用 ASP.NET、C# 和 MVC 模式开发我的网站后,我现在可以将我的网站部署到“真实”服务器(不再是 Visual Studio 的 IIS Express)。

所以,我尝试使用 Web 部署,配置了所有内容,并且似乎已经正确完成,因为我现在可以从服务器端看到我的所有文件。

但遗憾的是,当我尝试访问该网站时,我遇到了错误 403(来自客户端和服务器),服务器为我提供了更多信息:

“错误 403.14 - 禁止 - 服务器未配置为显示 该目录的文件”

如果我尝试像使用 Visual Studio 一样使用 url(例如 url/Views/Home/),它会返回:

Error 500.19 28: <system.webServer> 29: <handlers> 30: <remove name="BlockViewHandler"/>

这是相关的 web.config 文件:(有点)

  <system.webServer>
<handlers>
  <remove name="BlockViewHandler"/>
  <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>

我看不出问题出在哪里,因为该网站在 Visual Studio 中运行良好。

部署是在发布模式下完成的。

编辑:我启用了目录浏览,当我进入“视图”文件夹时,它返回相同的错误 500

【问题讨论】:

  • 在发布时检查您选择的发布模式而不是调试模式作为部署模式
  • “服务器未配置为显示此目录的文件”表示 IIS 找不到默认文档(例如 index.html 或 Default.aspx)。如果您使用的是 ASP.NET 的 URL 路由(如果您使用的是 ASP.NET MVC,则可能是这样),那么您需要确保您的应用程序的根目录在 IIS 管理器中定义为应用程序范围(如果您没有访问权限到 IIS 管理器,请联系您的虚拟主机)。一个网站可以定义多个应用程序范围,以允许多个应用程序(具有自己的bin 文件夹和顶级web.config 文件)并排共存。
  • 我尝试将 'Index.cshtml' 添加为默认文档(即使它看起来很傻),但它仍然返回错误 500

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


【解决方案1】:

这个问题可能有很多原因,我也遇到过这个问题,这是由于连接字符串,我使用的是 Integrated Security=true

1) 为了解决这个问题,我在连接字符串中添加了 Sql User,它解决了我的问题

例如你的连接字符串应该是这样的

用户 ID=testuser;密码=testpassword;初始目录=testdb;数据源=testserver

2) 另一个原因可能是您的 MVC 项目具有与您托管网站的应用程序池不同的 .Net 框架

【讨论】:

  • 我没有找到这个设置,它在哪里?
  • 连接字符串将在您的 MVC 项目的 Web.Config 文件中
  • 我在连接字符串中有“persist security info=True”,在这个文件中有“”
  • 您的连接字符串中有“用户 ID”吗?
  • yes : "user id=SomeId;multipleactiveresultsets=True;application name=EntityFramework"
【解决方案2】:

我通过从服务器中删除“开发”功能解决了我自己的问题,重新启动,再次添加它们,这很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2015-03-12
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多