【问题标题】:Owin: host name (or ip) and portOwin:主机名(或 ip)和端口
【发布时间】:2023-04-06 09:27:01
【问题描述】:

我有一个像这样的经典 owin 启动类:

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

有没有办法在“配置”函数中获取主机名(或 ip)和端口?

谢谢。

【问题讨论】:

  • 您是否可以查看特定请求(即通过app.Runapp.Use),或者您是否需要它之外的一些实际作为配置完成的事情?如果是前者,您是在寻找 本地 主机名和端口,还是远程?
  • @MatthewHaugen 是的,我在任何 .Run.Use 之外都需要它 :( 部署时我需要它
  • 嗯,是的,我不确定。但我也不确定主机名是否有意义。也许您可以从 NIC 获取 IP 地址,但这是假设服务器只有一个。除此之外,任何 DNS 查找都可能会导致类似“Server01”之类的东西,这并不是很有用。
  • 一个IP地址就可以了,我刚刚更新了帖子。

标签: asp.net owin katana


【解决方案1】:
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);
                    }
                }
            }
        }

【讨论】:

  • 这是一个改进,但我如何获得端口?及其System.Net.Dns :)
  • 您想要运行应用程序的端口?
  • appBuilder.Properties 中没有 'host.Addresses' 键 :(
  • 如果没有,那么你只能在第一个请求到来时获取端口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 2019-04-10
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多