部署到Azure后,我不断收到服务器错误 - 应用程序无法运行。所以我在实例中做了一个远程桌面,发现web.config被彻底检修过......发生了什么事?我以为web.config是按原样打包的?相反,整个配置已被替换。当我用原始的,未改变的,正确的配置替换“新”版本时,我的应用程序按预期工作。
首先,这里发生了什么?我究竟做错了什么?通过这种方式,我可以理解并且不会在将来复制它。
其次,我该如何阻止这种行为?我希望部署原始的web.config - 而不是一些任意的冒名顶替者。谢谢!
答案 0 :(得分:2)
除非您指定了转换(使用普通的内置web.config.debug和.release),否则它不会转换任何用户设置。在某个时间点,它确实转换了machineKey设置,这样您的Web角色就可以在Web场场景中运行(如果没有,那么在负载均衡器后面什么都不会起作用)。我确信它仍然会这样做,但它可能现在在machine.config级别执行(仅保留web.config)。我有一段时间没有检查过,所以不确定它现在做了什么。
检查将要部署的内容的简便方法是打包cskpkg并将其打开为.zip文件。 Inside将是另一个包含Web角色名称的文件。再次打开.zip,您应该看到您的网站全部打包。检查web.config并确保它是您需要的。如果没有,那么回到这里你认为不应该改变。
答案 1 :(得分:2)
根据dunnry关于解压缩cskpkg文件的建议,我注意到web.config从未打包过 - 所以Azure必须在必要时创建一个基本的(没有警告我!?!?)。经过一番调查,我发现了这个金块(来自another StackOverflow question addressing deployment issues):
原来,web.config文件甚至没有包含在部署包中。不知何故,web.config文件的BuildAction已从Content更改为None。
将BuildAction更改回“内容”后,我的部署现在可以按预期工作。