После 15 минут гугления я не могу найти решение этой простой проблемы. Так немного помощи?
Приложение размещено в подпапке web
веб-сайта, мне нужно сопоставить относительный Uri (это действие Hello
в RouteController
, которое принимает int и строку в качестве параметров):
"~/Route/Hello/129?name=kennyzx"
to
http://myserver/web/myapplication/Route/Hello/129?name=kennyzx
Если я использую
HttpContext.Current.Server.MapPath("~/Route/Hello/129?name=kennyzx");
Выдается исключение, поскольку вопросительный знак ?
является недопустимым символом.
Поэтому мне нужно сначала разделить Uri на две части ~/Route/Hello/129
и ?name=kennyzx
, затем MapPath
берет первую часть, а Path.Combine
объединяет результат MapPath
и строку запроса.
Есть ли более простой способ сделать это?
Я понимаю, что использую неправильный API, он фактически заменяется на реальный путь к файлу на моем сервере!
Вот что я пытаюсь сделать:
У меня есть куча относительных uris, и я хочу написать функцию, чтобы расширить их до абсолютных uris на странице Razor.
@{
ViewBag.Title = "Route Testing";
var link1 = "/Route/Hello/129?name=kennyzx";
var link2 = "~/Route/Hello/129?name=kennyzx";
}
@functions{
private static string GetAbsoluteUri(string link)
{
string absoluteUri = HttpContext.Current.Server.MapPath(link);
return absoluteUri;
}
}
<h2>Route Testing</h2>
<a href="@link1">@link1</a><br />
<a href="@link2">@link2</a><br />
<a href="@GetAbsoluteUri(@link2)">@link2</a><br />
Но ни один из вышеперечисленных не дает правильного абсолютного пути.
Первый расширяется до http://myserver/Route/Hello/129?name=kennyzx,
Второй расширяется до http://myserver/web/myapplication/~/Route/Hello/129?name=kennyzx
Третий выдает исключение, и поэтому я задаю этот вопрос.
Server.MapPath()
возвращает папку. Я думаю, вам нужно переосмыслить свой вопрос и уточнить, что вы хотите сделать. Например,Server.MapPath("~/index.html")
может вернутьc:\inetpub\wwwroot\index.html
- person Reinstate Monica Cellio   schedule 17.07.2018