mvc 5应用程序中的User-Agent

时间:2016-12-07 07:39:19

标签: c# browser asp.net-mvc-5 user-agent

我有一个MVC 5应用程序,其后端是Web API。对于我的服务器的每个请求,我需要提供用户代理,我可以在控制器操作方法中获取var UserAgent = Request.UserAgent.ToString();,然后在其他类中传递,如( Controller => Service => HttpRequester => XXXHttpClient )最后在 XXXHttpClient 类的实际请求中使用,但我认为可能有更好的方法来实现相同的目标。我试图谷歌它,但没有找到任何相关的,所以任何人都可以指导我什么是最好的做法如果我想直接在XXXHttpClient类中获取用户代理而不是随后传递。

1 个答案:

答案 0 :(得分:3)

一个广泛的问题,有很多可能的答案。

将数据传递到所有图层通常不是一件好事。

我要做的是制作一个MVC动作过滤器,它抓取用户代理并将其设置为一个对象。对象类可以是这样的:

public class RequestContext
{
    public string UserAgent { get; set; }
}

使用您的依赖注入框架为每个请求注入一次。然后,动作过滤器和依赖于数据的图层将使用相同的实例,允许您将数据提供给需要它的任何图层。

另一个使用静态属性的选项:

HttpContext.Current.Request.UserAgent

性能更高,更易于阅读,但可测试性更低:)