2012-03-05 171 views
2

我们正在开发将在Windows Azure上托管的ASP.NET MVC Web应用程序。在开发过程中我们已经部署了几次应用程序,没有任何问题。实际上,这个过程的顺利进行实际上令人惊讶。然后,当我们部署应用程序进行beta测试时,每当我们尝试导航到网站的基本url时,我们都会收到403 Access Denied错误。如果我们尝试导航到网站的各种控制器和操作之后,我们将获得404资源找不到错误。Azure ASP.NET MVC Web.Config部署问题

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

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

什么在世界上会使部署消灭web.config文件?我们如何防止这种情况发生,因为我们无法在每次部署更新时手动更新web.config文件?

+0

构建cspkg时是否正在执行任何配置转换? – 2012-03-05 16:29:46

+0

我会说实话,我甚至不知道这是可能的!除非我们意外地做了一些事情,否则我不会进行任何转换。只需确认,如果没有定义转换,那么web.config应该正确地部署到Azure中? – 2012-03-05 16:38:49

+0

你是对的。 web.config应该照原样复制。如果您导航到/bin/ /app.publish文件夹,则应找到上载到Azure的.cspkg文件。您可以通过给它扩展.zip来查看文件的内容。在cspkg中,Azure项目中引用的每个项目都有自己的zip文件(您还必须为项目zip添加.zip扩展名)。这将允许您查看Azure包的内容,而无需上传到Azure。这可以帮助解决这些问题。 – 2012-03-05 17:01:59

回答

2

我经常通过查看.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文件夹。