【发布时间】: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