首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AppDomainAppId in .NET Core?

AppDomainAppId in .NET Core?
EN

Stack Overflow用户
提问于 2018-10-19 11:09:12
回答 2查看 1.4K关注 0票数 1

当我在AppDomainAppId中获得.NET时,我得到了一个类似于/LM/W3C/<site id>/<servicename>的路径,如何在.NET核心服务中获得完全相同的路径?

我尝试了HttpRuntime.AppDomainAppPath等效于ASP.NET核的建议,但是我得到了像C:/path/to/app一样的安装路径,而不是上面描述的路径。

如何获得上面描述的路径,或者如何具体地获得<site id>部分?我可以从<servicename>获得HostingEnvironment.ApplicationName,但不能获得我需要的<site id>

EN

回答 2

Stack Overflow用户

发布于 2018-10-19 11:18:00

AppDomain不包含在dotnet核心中。有关迁移技巧,请查看AppDomain在.Net核中的替代

您使用.NET获得的路径看起来是特定于ASP.NET的AppDomain实现的,因此我认为您将无法使用DNC获得它。

System.Web/HttpRuntime.cs/Init中,我们可以看到_appDomainAppId = GetAppDomainString(".appId");

GetAppDomainString(string key)打电话给Thread.GetDomain().GetData(key);GetDomain方法与AppDomains直接相关。这些在DNC中不再存在。

票数 1
EN

Stack Overflow用户

发布于 2021-04-30 07:29:58

这听起来应该管用:

DataProtectionUtilityExtensions.GetApplicationUniqueIdentifier(IServiceProvider)

https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.dataprotection.dataprotectionutilityextensions.getapplicationuniqueidentifier?view=aspnetcore-5.0

返回的标识符对于此计算机上重复运行此应用程序应该是稳定的。此外,标识符仅在一台机器的范围内是唯一的,例如,两个不同机器上的两个不同应用程序可能返回相同的值。

由于某种原因,这个API是显式隐藏的。在引擎盖下面它使用IApplicationDiscriminator,这也是显式隐藏的,并且说不应该公开使用:) https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.dataprotection.infrastructure.iapplicationdiscriminator?view=aspnetcore-5.0

实现只是基于ContentRootPath主机环境,但在IIS上运行时可能还有其他实现,等等.它将返回与旧AppDomainAppId相同的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52891211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档