Jyo*_*ngh 0 c# browser user-agent asp.net-mvc-5
我有一个 MVC 5 应用程序,其后端是 Web API。对于对服务器的每个请求,我需要提供用户代理,我可以在控制器操作方法中获取它,var UserAgent = Request.UserAgent.ToString();然后在其他类中传递,例如(Controller => Service => HttpRequester => XXXHttpClient ),最后在XXXHttpClient类中的实际请求中使用但我认为可能有更好的方法来实现同样的目标。我尝试用谷歌搜索,但没有找到任何相关内容,所以如果我想直接在 XXXHttpClient 类中获取用户代理而不是随后传递,任何人都可以指导我什么是最佳实践。
这是一个宽泛的问题,但有很多可能的答案。
通过所有层传递数据通常不是一件好事。
我要做的是创建一个 MVC 操作过滤器来获取用户代理并将其设置为一个对象。对象类可能是这样的:
public class RequestContext
{
public string UserAgent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
使用依赖注入框架为每个请求注入一次。然后,动作过滤器和依赖于数据的层将使用相同的实例,允许您将数据获取到任何需要它的层。
使用静态属性的另一个选项:
HttpContext.Current.Request.UserAgent
Run Code Online (Sandbox Code Playgroud)
更高的性能,更容易阅读,但可测试性较低:)