0

我的 asp.net 项目,目前从http://localhost:51143/default.aspx运行

无论如何,我可以像http://localhost:51143/TOrders/default.aspx这样包含根目录我想这样做的原因是因为在菜单点击事件上调用的 URls 是指“TOders/Reports /aaa.aspx 等等,在生产中它会引用 Intranet/TOrders/Reports/aaa.aspx 等等。

4

2 回答 2

0

您需要HttpRequest.ApplicationPath属性或HostingEnvironment.ApplicationVirtualPath属性。

VirtualPathUtility类对构建虚拟路径也很有用。

编辑:

尝试将您的项目复制到您的 Web 根目录的子文件夹中,例如。在 IIS 中:

C:\inetpub\wwwroot\  (or what you set)
C:\inetpub\wwwroot\MyProject\

现在在 IIS 管理控制台中,在您的默认 Web 中,您创建一个新的“应用程序”。要么升级现有文件夹,要么为文件夹创建一个虚拟的新文件夹。

然后选择一个虚拟路径(TOrders)并设置物理路径。如果您有 .NET 4,您还将在此处设置 AppPool,或者如果您在 IIS6.x 上有 2.0/3.5,则选择运行时。先试试最高版本...

转到 localhost/Torders/

于 2012-07-21T20:26:08.677 回答
0

一种解决方案可能是拦截Global.asax中Application_BeginRequest方法中的每个请求。 在那里,您可以创建一个规则以从一开始就删除TOders/。尝试这样的事情:

void Application_BeginRequest(object sender, EventArgs e)
{
    if (Request.RawUrl.StartsWith("TOrders/"))
        Server.Transfer(Request.RawUrl.Substring(8));
}

这可能不是最好的解决方案,但它应该足以让您知道该怎么做。

编辑:

由于您有网络项目(不是网站),因此您可以设置项目的虚拟路径。我想这就是你要找的。

如果您使用的是 VS2010,请在解决方案资源管理器中右键单击您的项目并选择Properties,然后在Web选项卡上的 Servers 部分中,将项目的虚拟路径更改为/TOrders/而不是/这是默认值。现在你应该得到http://localhost:51143/TOders/default.aspx

于 2012-07-21T21:17:20.830 回答