当我在AppDomainAppId中获得.NET时,我得到了一个类似于/LM/W3C/<site id>/<servicename>的路径,如何在.NET核心服务中获得完全相同的路径?
我尝试了HttpRuntime.AppDomainAppPath等效于ASP.NET核的建议,但是我得到了像C:/path/to/app一样的安装路径,而不是上面描述的路径。
如何获得上面描述的路径,或者如何具体地获得<site id>部分?我可以从<servicename>获得HostingEnvironment.ApplicationName,但不能获得我需要的<site id>。
发布于 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中不再存在。
发布于 2021-04-30 07:29:58
这听起来应该管用:
DataProtectionUtilityExtensions.GetApplicationUniqueIdentifier(IServiceProvider)
返回的标识符对于此计算机上重复运行此应用程序应该是稳定的。此外,标识符仅在一台机器的范围内是唯一的,例如,两个不同机器上的两个不同应用程序可能返回相同的值。
由于某种原因,这个API是显式隐藏的。在引擎盖下面它使用IApplicationDiscriminator,这也是显式隐藏的,并且说不应该公开使用:) https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.dataprotection.infrastructure.iapplicationdiscriminator?view=aspnetcore-5.0
实现只是基于ContentRootPath主机环境,但在IIS上运行时可能还有其他实现,等等.它将返回与旧AppDomainAppId相同的值。
https://stackoverflow.com/questions/52891211
复制相似问题