Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Owin: имя хоста (или ip) и порт

Автор вопроса: dafriskymonkeyОтветов: 1

У меня есть классический класс запуска, подобный этому:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
    }
 }

Есть ли способ получить имя хоста (или ip) и порт внутри функции "Конфигурация"?

Спасибо.

  • Вы в порядке, просматривая конкретные запросы (например, через app.Run или app.Use), или вам это нужно помимо этого для чего-то, что фактически выполняется в качестве конфигурации? И если первое, вы ищете локальное имя хоста и порт или удаленный? Matthew Haugen 26.12.2014
  • @MatthewHaugen да, мне это нужно вне .Run или .Use :( и мне это нужно, когда оно будет развернуто dafriskymonkey 26.12.2014
  • Хм, да, я не уверен. Но я также не уверен, имеет ли смысл имя хоста. Возможно, вы могли бы получить IP-адрес от сетевой карты, но это при условии, что сервер имеет только один. Кроме того, любой поиск DNS, скорее всего, приведет к чему-то вроде Server01, что не очень полезно. Matthew Haugen 26.12.2014
  • IP-адрес был бы в порядке, я только что обновил сообщение. dafriskymonkey 26.12.2014

owinkatana

Ответы

Ответ 1 · рейтинг 3 · dotnetstep

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
         //Get hostname
         string hostName = System.Net.Dns.GetHostName();

        // Get all ip address.
         IPAddress[] ips;
         ips = System.Net.Dns.GetHostAddresses(hostName);
    }
 }

Чтобы получить всю ценность от IAppBuilder, вы можете сделать это следующим образом.

public void Configuration(IAppBuilder appBuilder)
        {
            foreach(var item in appBuilder.Properties)
            {
                //Console.WriteLine(item.Key + " - " + item.Value);
                if(item.Key == "host.Addresses")
                {
                    dynamic d = item.Value;
                    var items = (Dictionary<string,object>)d[0];
                    // Here there are four keys for scheme , host , port , path
                    foreach(var add in items)
                    {
                        Console.WriteLine(add.Key + " - " + add.Value);
                    }
                }
            }
        }

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы