我们有一个 WebRole,它处理来自 WCF 服务的请求,它会进行验证,然后将消息放入云存储中的 Azure 队列中。在同一个应用程序中,我们有一个 WorkerRole,它从队列中读取信息并调用我们的持久层来处理请求并返回结果。我们想知道为什么辅助角色没有选择我们的任何配置设置,因此没有提供我们正在寻找的跟踪信息。我们意识到辅助角色可能正在寻找 app.config 但找不到它。
有没有办法将辅助角色指向 Web 配置,或者能够将我们的企业库设置加载到 ServiceConfiguration.cscfg 文件中,这在任何一种情况下都意味着两者都可以从公共(public)位置读取?
提前非常感谢 金都
最佳答案
据我所知,您的辅助角色无法立即访问 Web 角色的 Web 配置。
如果您将配置项移至 ServiceConfiguration.csfg 文件,并且工作线程和 Web 角色位于同一云项目中,则设置将位于同一文件中。但由于 Web 角色和辅助角色是该云项目中的不同项目,因此它们的设置位于该 .csfg 文件的不同部分。如果您希望两者的设置相同,则必须复制设置。
将您的设置放入此文件中的好处是,您可以在角色运行时更改设置,并让角色以您喜欢的方式响应,例如您可能需要某些设置来重新启动角色,而对于其他角色,您可能只想更新静态变量。为了更新 web.config 或 app.config,您需要重新部署该角色。
您确实需要注意,ServiceConfiguration 文件并不能替代 Webconfig。如果您使用在 Web 或应用配置中查找设置的工具,除非它们特别聪明并且了解 Azure 环境,否则它们不会在 ServiceConfiguration 文件中查找设置。
我知道您没有问这个问题,但如果您希望辅助角色通过使用请求队列和响应队列为您的网络角色提供几乎同步的响应,您可能会发现不会很好地扩展。如果您想对 Azure 中的辅助角色进行同步调用,您最好使用 WCF(指南中没有突出显示这一点)。正如您所说,无论如何,所有这些都只是一个 WCF 服务,您问题的答案可能就是取消辅助角色。
关于azure - 同一应用程序中的工作人员和 Web 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3723033/