检测.NET应用程序是在Azure中还是在非Azure环境中运行

 LaravelChen 发布于 2023-02-09 14:46

我们目前正在将我们的应用程序的一些实例移动到Azure,但仍将保持与非Azure托管的现有实例的向后兼容性.

是否有一种很好的方法来检测环境而无需在非Azure生产服务器上安装SDK?

我尝试过使用:

if (RoleEnvironment.IsAvailable)

来自Microsoft.WindowsAzure.ServiceRuntime,它在本地和Azure中都可以很好地工作.但是,我需要将Microsoft.WindowsAzure.ServiceRuntime.dll设置为CopyLocal,即使这样我也得到:

无法加载文件或程序集'msshrtmi,Version = 2.2.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一

似乎没有NuGet包,我不想手动复制msshrtmi dll.

也许有一种方法可以在不依赖Microsoft.WindowsAzure.ServiceRuntime的情况下进行检测?

1 个回答
  • 不幸的是,解决此问题的最简单方法是从以下位置复制msshrtmi.dll文件:

    C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\{version}\bin\runtimes\base\x64

    我知道复制DLL并不是很好,但这是你需要防止错误的唯一一个,它与你正在使用的SDK版本绑定,因此在你更新SDK之前不会改变.

    一种可行的替代方法是在为Azure构建应用程序时添加配置值appSettings并应用配置转换.

    2023-02-09 14:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有