首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Owin启动中注册中间件时是否可以获得主机名(站点名)?

在Owin启动中注册中间件时是否可以获得主机名(站点名)?
EN

Stack Overflow用户
提问于 2015-10-09 07:21:03
回答 2查看 1K关注 0票数 1

我有一个中间件,它需要options对象来启动。其中一个属性是hostname(我的意思是要像http://mywebsite.com那样设置它,而不是物理机器名)。中间件被配置为在启动时执行一些业务逻辑,因此不能使用app.Run()和app.Use()。

我也不能硬编码主机名(因为我用不同的站点名称运行多个实例),也不能从配置文件中获取它,因为: 1.它重复了我可以从数据库中获得的信息,如果我知道主机名就好了。2.我仍然不能确定我拥有的众多站点实例中的哪一个实例被调用了

代码语言:javascript
复制
var options = new MyMiddlewareOptions{
hostname = <hostname of the server hosting this app>,
.
..
...
//other properties
};
app.UseMyMiddleware(options);

由于没有可用的请求或环境数据,如何在Owin启动时获取主机名?

我试过使用内联中间件,我得到了主机名,但已经太晚了。

关于…的东西:

代码语言:javascript
复制
app.Use((ctx,next) =>
        {
            host = ctx.Request.Uri.Host;
            var options = new MyMiddlewareOptions
            {
                hostname = host
            };
            app.UseMyMiddleware(options);
            return next.Invoke();
        }

上面的代码给了我主机名,但是当一个请求已经在进行中时,注册一个新的中间件已经太晚了,因此它并没有真正做它应该做的事情。

有没有办法在中间件注册时获得启动时的主机名?

EN

回答 2

Stack Overflow用户

发布于 2017-05-18 23:05:50

在收到第一个请求之前,没有绝对的方法来获取主机名。这取决于你用什么来托管网站。当它是自托管的时候,你可以做app.Properties["host.Addresses"]。然而,IIS Express却是另一回事--启动的关键字并不存在(如果有办法的话,我一点也不知道)。

票数 1
EN

Stack Overflow用户

发布于 2018-12-04 03:37:07

使用app.map('pathYouWant', methodYouNeed);

我有一个使用此方法的葡萄牙语示例。

访问here,您可以了解更多有关这方面的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33027521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档