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