我有一个中间件,它需要options对象来启动。其中一个属性是hostname(我的意思是要像http://mywebsite.com那样设置它,而不是物理机器名)。中间件被配置为在启动时执行一些业务逻辑,因此不能使用app.Run()和app.Use()。
我也不能硬编码主机名(因为我用不同的站点名称运行多个实例),也不能从配置文件中获取它,因为: 1.它重复了我可以从数据库中获得的信息,如果我知道主机名就好了。2.我仍然不能确定我拥有的众多站点实例中的哪一个实例被调用了
var options = new MyMiddlewareOptions{
hostname = <hostname of the server hosting this app>,
.
..
...
//other properties
};
app.UseMyMiddleware(options);
由于没有可用的请求或环境数据,如何在Owin启动时获取主机名?
我试过使用内联中间件,我得到了主机名,但已经太晚了。
关于…的东西:
app.Use((ctx,next) =>
{
host = ctx.Request.Uri.Host;
var options = new MyMiddlewareOptions
{
hostname = host
};
app.UseMyMiddleware(options);
return next.Invoke();
}
上面的代码给了我主机名,但是当一个请求已经在进行中时,注册一个新的中间件已经太晚了,因此它并没有真正做它应该做的事情。
有没有办法在中间件注册时获得启动时的主机名?
https://stackoverflow.com/questions/33027521
复制相似问题