【问题标题】:How to correctly publish and update an ASP.NET app in IIS如何在 IIS 中正确发布和更新 ASP.NET 应用程序
【发布时间】:2014-08-18 22:36:46
【问题描述】:

每次我在 IIS 服务器上更新 ASP.NET 应用程序时都会遇到问题。问题是:

  • 我收到一条错误消息,告诉我关闭自定义错误<customErrors mode="Off"/>
  • TLD 的默认网站重定向无限期地重定向 URL
  • 我创建删除并替换了应用程序或重定向

我有一个 ASP.NET 4.5 框架应用程序。我正在使用 Visual Studio 2012 创建 Web 应用程序。我使用的是 Windows Server 2008 R2 64 位,安装了 IIS 7 角色。检查并安装了 IIS 角色的最后一个选项。

一旦 IIS 启动并运行,我在 C:\inetpub\wwwroot 中创建了一个目录,并将我发布的 ASP.NET 应用程序放在我创建的目录中。然后我通过 IIS 管理器添加了应用程序。

之后,我可以从 www.example.com/app 浏览到我的应用程序。当前的应用程序正在运行。由于我希望在 Web 浏览器中键入我的 TLD 的任何人都被重定向,因此我通过默认网站下的 IIS 管理器创建了一个 HTTP 重定向。它在 C:\inetpub\wwwroot 中创建一个 web.config 文件,其中包含重定向。

所有这些都完成后,一切正常。直到我想更新 ASP.NET 代码。我从 C:\inetpub\wwwroot\app 中删除旧文件并复制新文件。在那之后,一切都不再正常了。我试图通过 IIS 删除该应用程序,然后重新添加它。我什至删除了 http 重定向,然后重新添加了它。无论我做什么,我的网站 www.example.com 的根目录和网络应用程序都无法正常工作。我必须删除 IIS 角色并重新安装它。一旦我这样做了,当前的代码就可以工作了,一切都恢复正常了。

谁能告诉我如何在每次都重新安装 IIS 的情况下更新我的代码?

【问题讨论】:

  • 告诉您关闭 customErrors 模式的消息并不是您的实际错误。它指示您这样做,因为存在一些潜在错误,但默认情况下它不会显示实际错误,除非您在 localhost 上浏览它(出于安全目的)。关闭 customErrors 是不好的做法(除非它只是暂时的)。相反,实施正确的错误记录,例如Elmah。一旦确定了实际错误是什么,您就可以排除根本原因。
  • 我不确定,但您是否尝试在没有您的 web.config 的情况下“更新”(不删除和替换文件)IIS 上的应用程序文件夹?
  • @mason 没有任何错误。删除并重新安装 IIS 后,新更新的代码一切正常
  • 不要删除并重新安装 IIS - 尝试获取实际的错误消息,以便找出根本问题(检查服务器上的事件日志,或设置 customErrors=Off。)
  • 在 C:\inetpub\wwwroot 中创建目录后,您是否尝试从 IIS 管理器刷新网站,右键单击该文件夹并选择转换为应用程序以避免“混合”应用程序配置和网站配置

标签: c# asp.net iis iis-7


【解决方案1】:

在 IIS 中创建重定向后,它会在 C:\inetpub\wwwroot 的 web.config 文件中创建重定向

您不知道它还会在您的应用文件夹中创建一个。在您尝试更新代码之前,这一切都很好。由于您在发布(或至少可能是您的设置)时删除了该文件夹中的文件,因此该文件已被删除。

你必须附加你的发布文件而不是删除它们,因为你要求 IIS 为你重定向:)

【讨论】:

    【解决方案2】:

    当您更新文件时,请参考之前运行的旧 web.config 文件。只需确保如果您修改了代码中的引用或程序集,则参考新的 web.config 文件,否则旧文件将起作用,而不是重新安装 IIS 服务。

    【讨论】:

      【解决方案3】:

      更新文件后,从文件夹属性->安全->高级设置中检查文件夹权限设置。如果每次更新时子文件夹都会更改其设置,那么这可能是问题所在。

      【讨论】:

        【解决方案4】:

        是否可以让 app_offline.htm 显示“此站点暂时停止维护,请稍后再检查”之类的消息?

        这样的文件允许您更新您的网站,而不会出现任何令人讨厌的错误消息。

        【讨论】:

        • 不,不是,我不认为这看起来很专业。
        【解决方案5】:

        我找到了一个很棒的教程,它为我解决了这个问题......我必须同意 web.config 文件,使用你当前的文件(复制它,如果你有你的发布设置删除旧文件 - 我犯了同样的错误,发现自己不得不重新授予对我的 wwwroot 文件夹以及我的数据库的访问权限)。

        本教程帮助我完成了安装和更新应用程序的过程。

        • 如果您只是对视图或 css 文件进行更改,您可以简单地将更新的视图复制并粘贴到该文件夹​​中 - 我发现这比在每次更新时重新发布整个项目的侵入性要小得多。

        查看下面的链接以获取有关发布和配置 IIS 和 SQL 服务器的帮助

        https://www.codeproject.com/Articles/674930/Configuring-IIS-ASP-NET-and-SQL-Server

        【讨论】:

          【解决方案6】:

          向我们展示应用程序池的设置。

          可能存在许多问题,例如运行应用程序池的用户上下文对文件系统的权限。

          可能是对数据库的权限。

          我们需要更多信息。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-06-20
            相关资源
            最近更新 更多