返回本地和实时服务器之间不同的路径

时间:2012-07-30 16:45:06

标签: c# asp.net-mvc-3 iis-7 asp.net-mvc-routing

我正在使用这样的方法来获取应用程序的URL路径:

string strPathAndQuery = HttpContext.Request.Url.PathAndQuery;
string strUrl = HttpContext.Request.Url.AbsoluteUri.Replace(strPathAndQuery, "/");

这应该是当前网址的路径。

问题是,我的实时服务器将应用程序作为IIS服务器内的应用程序(文件夹)运行。所以在测试时我会得到一个像:

这样的网址
http://localhost/Survey/Create

活着,我得到了:

http://testurl.com/Survey/Create

当我对实时服务器需要的是:

http://testurl.com/SurveyApp/Survey/Create

SurveyApp是将应用程序存储在IIS中的文件夹。有没有办法让我可以得到控制器所在位置的URL,无论物理位置如何?

3 个答案:

答案 0 :(得分:1)

MVC有这方面的方法,例如Url.Content。当您使用app#dir相对路径(例如"〜/ Survey / Query")时,这些将解析当前URL。您还可以使用Html.ActionLink或Url.Action等方法获取特定操作方法的URL。这些将根据您的正确路径进行调整。

你能更具体地说明为什么要试图找到这条路吗?

答案 1 :(得分:0)

您是否尝试在相对URI前添加〜符号。例如,要关联/Survey/Query,请使用~/Survey/Query

编辑:

HttpContext.Current.Request.ApplicationPath怎么样?

答案 2 :(得分:0)

Url.Content就是你想要的。类似的东西:

string url = Url.Content("Query", "Survey");

第一个参数是Action,第二个是Controller。 http://msdn.microsoft.com/en-us/library/dd492758

您也可以使用相当多的重载。