我创建了一个空的Azure Cloud Service项目,然后在那里添加了一个Web角色。角色项目有一个web.config文件。
当我点击F5时,角色部署在Compute模拟器中。我进入了部署角色二进制文件的文件夹 - 那里没有web.config文件。
发生了什么事?那是因为我没有在web.config文件中设置“copy always”吗?我的角色使用什么web.config?
答案 0 :(得分:1)
如果您的角色配置为完全IIS模式(对于那些不知道托管Web Core和完整IIS之间的区别,请参阅this blog post),计算模拟器应将Web角色部署到IIS,以便在其中查看在IIS管理器中。在我的机器上(我正在运行Azure SDK 1.5),部署的Web角色的物理路径是我的源代码目录。
答案 1 :(得分:0)
我认为web.config作为开发环境中的内容编译到您的程序集中,并且不能像staging / prod那样直接访问。如果将其标记为内容,则无需使用“始终复制”,即可。您可以使用Environment.CurrentDirectory
查看您的网络根路径。
答案 2 :(得分:0)
尽管在Windows Azure应用程序中存储配置的首选方法是在ServiceConfiguration.cscfg文件中,但仍有许多情况下您可能希望使用普通的.NET配置文件 - 尤其是在配置.NET系统组件或可重用时构架。特别是在使用Windows Azure诊断时,您需要在.NET配置文件中配置DiagnosticMonitorTraceListener。
创建Web角色项目时,Visual Studio会为.NET配置创建web.config文件。虽然您的Web应用程序可以访问此信息,但您的RoleEntryPoint代码不能 - 因为它不是作为您网站的一部分运行的。如前所述,它在名为WaIISHost.exe的进程下运行,因此它希望其配置位于名为WaIISHost.exe.config的文件中。因此,如果您在Web项目中创建具有此名称的文件并将“复制到输出目录”属性设置为“始终复制”,您将发现RoleEntryPoint可以愉快地阅读此内容。这是我能想到的在同一个项目中你将拥有两个.NET配置文件的唯一情况之一!
所有信息均来自Azure团队博客,我已成功使用此解决方案 - http://blogs.msdn.com/b/windowsazure/