2017-01-06 126 views
0

我想这应该是相当简单的,但我不能因为某些原因找到这对谷歌的任何访问当前请求头

我有一个的WebAPI 2.0控制器(型号:ApiController),可以读取的读取请求头

Request.Headers.GetValues("SomeHeader"); 

在同一个项目中,我有另一个类(AccessFactory),我想从访问头。

原因是我不想为每个函数调用执行相同的代码,以便在实际需要的地方读取所有需要的标题。

+0

将请求对象或标头值的相关子集传递给DLL方法是否合理?据推测他们是在告诉它关于当前的情况?如果此方法在DLL中,是否可以在非Web应用程序中重用?如果是这样,那么传递值就可能是有意义的,而不是依赖于Web特定的对象。不知道,取决于你的设计。但我认为在一个单独的项目中,你仍然可以访问当前的HTTP上下文(以及请求头),如果你想这样做,那么'System.Web.HttpContext.Current'就是你需要的。 – ADyson

+0

完成诀窍很好谢谢你。请回答,以便我可以接受。这个工厂是底层基础架构的超级集合,只会在Web部件中使用,因此它可以安全地绑定到Web上:) – Jester

+0

完成。我已经留下了关于网络内容的评论,仅供未来的读者阅读,但可以随意忽略它:-) – ADyson

回答

0

在一个单独的项目/ DLL中,仍然可以使用System.Web.HttpContext.Current对象访问当前HTTP上下文(以及请求标头)。另外,我想补充一点,如果这个DLL是为了在不同的应用程序中重复使用,那么考虑它是否会用在非web应用程序上,如果是的话,你应该避免在web上进行依赖像这样的背景。相反,您可能会考虑将所需的标题值作为简单类型或定制对象传递。这样他们可以指示上下文,但非Web应用程序可以传递它自己的等效上下文值。但是,这是一个单独的设计决定,具体取决于具体目的以及您打算如何在未来使用该DLL库。