我使用的相当优良IIS7重写模块(V2),以及要创建重写不同的物理文件是否存在depeneding定制RewriteProvider。

我已经成功地创建的提供者,如本教程: HTTP:/ /learn.iis.net/page.aspx/804/developing-a-custom-rewrite-provider-for-url-rewrite-module/

然而,真正需要的是能够将URL映射到物理路径 - 我会通过HttpContext.Current.Server.MapPath()或HostingEnvironment.MapPath()通常做到这一点,但它看起来像的HttpContext一直没有初始化的(在目前的应用程序域内至少 - 由于重写模块是本机代码,我有困难工作了哪里可以得到这些信息)。

我真的不希望有诉诸创造我自己重写模块来解决这个问题 - 任何人有任何线索,我

谢谢! 标记

有帮助吗?

解决方案

您将无法使用这些API,因为在不同的AppDomain比一个ASP.NET代码运行使用得到它。

我能想到的,使这项工作的唯一方法是通过正确的服务器变量,包括您的分机的物理路径,做一个Path.Combine()自己。

因此,假设你有一个名为YourProvider的扩展,你以某种方式调用是这样的: 的 {YourProvder:{URL}}

您可以这样做: 的 {YourProvder:{APPL_PHYSICAL_PATH} | {URL}}

您现在可以得到的物理路径和URL相隔管道| ,请务必先通过物理路径,因为URL是在你不希望他们诱骗您得到一个不同的物理路径的外部用户的控制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top