Что самый быстрый путь состоит в том, чтобы получить абсолютный uri для корня приложения в asp.net?

Для извлечения из json вы должны использовать jq, если можете. По словам авторов, «jq - это как sed для данных JSON» (источник) .

В вашем случае это должно быть:

$ jq -r '.project' output.json | jq -r '.content' | jq '.[] | select(.name=="ABC")' | jq -r '.location'

Вывод будет:

NewYork

Чтобы получить вывод, который вам требуется, так:

"location":"NewYork"

Вы можно использовать:

echo "\"location\":$(jq -r '.project' output.json | jq -r '.content' | jq '.[] | select(.name=="ABC")' | jq '.location')"

Перед тем, как использовать jq, вы должны установить его в Debian и Ubuntu. Это будет:

$ sudo apt install jq

для других ОС, вам следует проверить этот сайт [116 ].

6
задан Sam Saffron 29 May 2012 в 06:46
поделиться

8 ответов

Можно сделать это как это:

string.Format("{0}://{1}:{2}", Request.Url.Scheme, Request.Url.Host, Request.Url.Port)

И Вы получите универсальный синтаксис URI <протокол>://<хост>: <порт>

2
ответ дан 9 December 2019 в 20:50
поделиться

Можно использовать что-то вроде этого.

System.Web.HttpContext.Current.Server.ResolveUrl("~/")

Это отображается на корень приложения. теперь, если Вы будете в виртуальном каталоге, то необходимо будет сделать немного больше работы.

Править

Старая регистрация содержала неправильный вызов метода!

2
ответ дан 9 December 2019 в 20:50
поделиться
System.Web.UI.Page.Request.Url
1
ответ дан 9 December 2019 в 20:50
поделиться

Мне действительно нравится способ, которым CMS обработал этот вопрос лучшее, с помощью Строки. Формат и Страница. Переменные запроса. Я был бы точно так же, как для тонкой настройки его немного. Я просто протестировал его на одной из моих страниц, таким образом, я скопирую код здесь:

String baseURL = string.Format(
   (Request.Url.Port != 80) ? "{0}://{1}:{2}" : "{0}://{1}", 
    Request.Url.Scheme, 
    Request.Url.Host, 
    Request.Url.Port)
2
ответ дан 9 December 2019 в 20:50
поделиться
this.Request.Url.Host
1
ответ дан 9 December 2019 в 20:50
поделиться

Этот метод обрабатывает http/https, номера портов и строки запроса.

'Returns current page URL 
Function fullurl() As String
    Dim strProtocol, strHost, strPort, strurl, strQueryString As String
    strProtocol = Request.ServerVariables("HTTPS")
    strPort = Request.ServerVariables("SERVER_PORT")
    strHost = Request.ServerVariables("SERVER_NAME")
    strurl = Request.ServerVariables("url")
    strQueryString = Request.ServerVariables("QUERY_STRING")

    If strProtocol = "off" Then
        strProtocol = "http://"
    Else
        strProtocol = "https://"
    End If

    If strPort <> "80" Then
        strPort = ":" & strPort
    Else
        strPort = ""
    End If

    If strQueryString.Length > 0 Then
        strQueryString = "?" & strQueryString
    End If

    Return strProtocol & strHost & strPort & strurl & strQueryString
End Function
0
ответ дан 9 December 2019 в 20:50
поделиться

Мне пришлось иметь дело с чем-то похожим, мне нужен был способ программно установить тег, указывающий на корень моего веб-сайта.

Принятое решение не работало для меня из-за локального хоста и виртуальные каталоги.

Итак, я придумал следующее решение, оно работает на локальном хосте с виртуальными каталогами или без них и, конечно же, на веб-сайтах IIS.

string.Format("{0}://{1}:{2}{3}", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, ResolveUrl("~")
0
ответ дан 9 December 2019 в 20:50
поделиться

Сочетая лучшее из того, что я видел по этому вопросу до сих пор, этот вариант заботится о:

  1. http и https
  2. стандартных портах (80, 443) и нестандартных
  3. приложении, размещенном в подпапке корня

    string url = String.Format(
     Request.Url.IsDefaultPort ? "{0}://{1}{3}" : "{0}://{1}:{2}{3}",
     Request.Url.Scheme, Request.Url.Host,
     Request.Url.Port, ResolveUrl("~/"));
    
0
ответ дан 9 December 2019 в 20:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: