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