Как создать полностью определенную гиперссылку на ресурс динамически? - PullRequest
1 голос
/ 12 июня 2010

В ASP.NET я хотел бы создать ссылку, которая указывает на определенный Uri, и отправить эту ссылку пользователю по электронной почте, например, что-то вроде http://www.BlaBla.com/CustomerPortal/Order/9876.Я могу создать вторую часть Uri /CustomerPortal/Order/9876 динамически в коде позади.У меня вопрос: как я могу создать базовый Uri http://www.BlaBla.com без жесткого кодирования в моем приложении?По сути, я хочу получить что-то вроде:

http://localhost:1234/CustomerPortal/Order/9876 (on my development machine)
http://testserver/CustomerPortal/Order/9876 (on an internal test server)
http://www.BlaBla.com/CustomerPortal/Order/9876 (on the production server)

Так есть ли способ спросить у сервера, на котором запущено приложение: «Скажите, пожалуйста, базовый Uri приложения»?Или любым другим способом?

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 12 июня 2010

Примерно так:

HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath.TrimEnd('/')
2 голосов
/ 12 июня 2010

Вы должны поместить ключ в конфигурации, что-то где-нибудь, потому что, когда вы думаете о своем веб-приложении, оно на самом деле не привязано к URL-адресу.Например:

http://localhost:1234/
http://yourMachineName:1234/
http://yourMachineName.domain.com:1234/
http://127.0.0.1:1234/

Это всего лишь несколько способов попасть на тот же сайт на localhost .... что это?Та же проблема существует в производстве, десятки доменов или IP-адресов могут указывать на одно и то же веб-приложение, и оно использует заголовки хоста или, может быть, ничего не выделяет.Дело в том, что когда вне контекста запроса сайт не знает, с каким URL он идет, это может быть что угодно, просто нет отношения 1: 1.

Если вы в контексте запроса при отправке электронного письма, затем посмотрите на HttpRequest.Url, это тип Uri, и вы можете см. доступные свойства здесь .

Вы можете сделать что-то вроде этого:

var host = HttpContext.Current.Url.Host;
//generate your link using the host
1 голос
/ 12 июня 2010

Как насчет поместить его в web.config

<configuration>
    <appSettings>
       <add key="SendingUrlBase" value="http://www.BlaBla.com"/>
...