【问题标题】:Azure ASP.NET MVC Web.Config Deployment IssueAzure ASP.NET MVC Web.Config 部署问题
【发布时间】:2012-03-23 02:58:09
【问题描述】:

我们正在开发一个将托管在 Windows Azure 上的 ASP.NET MVC Web 应用程序。我们在开发过程中部署了几次应用程序,没有任何问题。事实上,这个过程的顺利进行是相当令人惊讶的。然后,当我们去部署应用程序进行 Beta 测试时,每当我们尝试导航到网站的基本 URL 时,都会不断收到 403 Access Denied 错误。如果我们尝试导航到站点的任何各种控制器和操作,之后我们会得到 404 The resource could not be found 错误。

我们注意到的另一件奇怪的事情是,我们将身份验证重定向页面定义为 /Access/SignIn 而不是默认的 Account/Login。在开发机器上一切正常,我们被重定向到 /Access/SignIn,但是当发布到 Azure 时,我们看到我们被重定向到 /Account/Login。这让我们认为 web.config 文件有问题。

我们在 Azure 部署中启用了远程桌面并查看了 web.config 文件,却发现它几乎完全是空的!那里唯一的设置是 machineKey。我们手动将 web.config 从我们的一台开发机器复制到 Azure 虚拟机实例,然后一切都从那里开始工作。

究竟是什么让部署清除了 web.config 文件?由于我们无法在每次部署更新时手动更新 web.config 文件,我们如何防止这种情况发生?

【问题讨论】:

  • 您在构建 cspkg 时是否执行了任何配置转换?
  • 老实说,我什至不知道这是可能的!除非我们不小心做了什么,否则我不知道发生了任何变化。只是为了确认一下,如果没有定义转换,web.config 应该正确地部署到 Azure 吗?
  • 你是对的。 web.config 应该按原样复制。如果导航到 /bin//app.publish 文件夹,您应该会找到已上传到 Azure 的 .cspkg 文件。您可以通过为其指定 .zip 扩展名来查看文件的内容。在 cspkg 中,Azure 项目中引用的每个项目都有自己的 zip 文件(您还必须为项目 zip 添加 .zip 扩展名)。这将允许您查看 Azure 包的内容,而无需上传到 Azure。这可以帮助解决这类问题。
  • 感谢您的提示!这让我找到了解决方案。原来 web.config 文件甚至没有包含在部署包中。不知何故,web.config 文件的 BuildAction 从 Content 更改为 None ...不知道这是怎么发生的。如果你为这个问题提供某种答案,我可以给你信用。
  • 谢谢尼克!很高兴听到您能够解决您的问题。

标签: asp.net-mvc azure web-config


【解决方案1】:

我经常通过查看 .cspkg 文件的内容来解决这类问题。这让我可以避免等待 Azure 包上传和初始化。以下是查看 .cspkg 内容的步骤:

  1. 导航到 /bin//app.publish 文件夹
  2. 将 .cspkg 文件重命名为 .cspkg.zip。
  3. 打开 .cspkg.zip。您会为 Azure 项目引用的每个项目找到一个 .cssx 文件(实际上是一个 zip 文件)。
  4. 提取要检查的 .cssx 文件并将其重命名为 .cssx.zip
  5. 打开 .cssx.zip 并环顾四周。对于 WorkerRoles,请查看 approot 文件夹。对于 WebRoles,请查看 sitesroot 文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多