ASP.Net Core的VirtualPathUtility替代方案

20

ASP.Net Core中是否有VirtualPathUtility.ToAbsolute的替代方法?似乎没有可用的。

我想要将相对路径(如"~/bob")转换为绝对路径(如"/app/bob")。

我正在尝试从类库中进行此操作,因此无法访问控制器和视图的常规属性。

我正在将一个应用程序从ASP.Net迁移到ASP.Net Core,而这个库正在被很多地方调用,并通过控制器传递参数不是我想做的事情 - 由于需要在很多地方传递,所以这将需要数小时的工作。

我正在使用运行在.Net Framework 4.7.1上的ASP.Net Core 2.1(虽然我计划在未来的版本中迁移到.Net Core,一旦删除了一些依赖项,因此我希望能够解决适用于Famework和.Net Core的问题)。


2
这个问题不是重复的,因为它与获取“绝对URL”无关,尽管方法名称是什么,该方法用于解析波浪线路径。 - Alex from Jitbit
1个回答

2
您可以使用 HttpRequest.PathBase:
string relativeUrl = "~/foo";
string absoluteUrl = httpContext.Request.PathBase + relative[1..];

@MrTA :: 如果您正在使用进程内IIS集成,那么在启动期间怎么样?您还没有收到请求,因此不能依赖最终用户发送给您的内容... - jimbobmcgee
@jimbobmcgee 很好的问题,我不确定。使用IIS,您可以读取元数据并通过那种方式找出虚拟路径,但这似乎很复杂。 - Mr. TA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接