Получить корень приложения из объекта Request, который работает локально и удаленно - PullRequest
1 голос
/ 15 марта 2011

Допустим, у меня есть веб-приложение ASP.NET в каталоге с именем «MyApp» как локально, так и на удаленном сервере.Я пытаюсь создать ответ на ссылку.Ответ вызывает функцию Javascript, передавая URL-адрес страницы .aspx в моем веб-приложении.Javascript выскакивает новое окно, отображающее страницу.Мой код C # выглядит следующим образом:

link = new HyperLink();
link.Text = product_num_str;
link.NavigateUrl = "#";

string url = "Javascript:My_NewWindow('http://" + 
             HttpContext.Current.Request.Url.Authority +
             "/ProductInfo.aspx?_num=" + product_num_str + "')";

link.Attributes.Add("onclick", url);

Я начал использовать свойство Authority для запроса, потому что у меня были проблемы с локальным запуском на веб-сервере Visual Studio, когда я использовал свойство Host.Проблема заключалась в том, что Host возвращал только localhost вместо хоста и номера порта.

При локальном тестировании код работает, поскольку «полномочия» отображаются в корневой папке моего приложения.Сгенерированный URL-адрес, например,

http://localhost:52071/ProductInfo.aspx?_num=123

Если я запускаю на удаленном сервере, я получаю что-то вроде:

http://company-server/ProductInfo.aspx?_num=123

Это не удается найти страницу, потому чтов этом случае должна быть включена корневая папка «MyApp».

Возможно, существует более простой способ - поместить запись в файл web.config или что-то в этом роде.Первоначально моя мотивация состояла в том, чтобы позволить приложению быть опубликованным в папке с любым именем и работать как есть.

Я мог бы взломать свой подход и найти строку «localhost» или что-то в этом роде, но это ужасно.Так как мне построить строку, которая будет работать везде?

1 Ответ

2 голосов
/ 15 марта 2011

Я предполагаю, что вы делаете это из Страницы или Контроля.Если это так, вы должны сделать это вместо этого:

string fullUrl = this.ResolveClientUrl("~/ProductInfo.aspx?_num=" + product_num_str + ");

Это даст вам правильный URL независимо от того, где развернуто приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...