【问题标题】:ASP.Net MVC and 51Degrees - Device Detection IssueASP.Net MVC 和 51Degrees - 设备检测问题
【发布时间】:2021-05-14 19:33:24
【问题描述】:

下面的代码在本地工作,但在服务器上托管时不起作用(Win 2016)。有什么想法吗?

公共抽象类 BaseController : 控制器 {

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        base.Initialize(requestContext);


        Session["DeviceInfo"] = new Device();

        if (WebProvider.ActiveProvider != null)
        {
            if ((requestContext.HttpContext.Request.Headers != null) && (requestContext.HttpContext.Request.Headers.Count > 0) && (requestContext.HttpContext.Request.Headers.HasKeys()))
            {
                // Perform device detection on the headers provided in the
                // request.
                var match = WebProvider.ActiveProvider.Match(
                requestContext.HttpContext.Request.Headers);

                Session["DeviceInfo"] = new Device(match);
            }
        }
    }

。 . . . .

【问题讨论】:

  • 意味着在服务器上托管时 requestContext.HttpContext.Request.Headers 为空。本地测试时不为空..

标签: 51degrees


【解决方案1】:

我不确定哪种情况会导致 Request.Headers 集合为空,但我认为这一定与托管配置/环境有关。

我建议将其剥离回一个非常基本的“hello world”样式网页,该网页仅显示任何标题的名称和值。如果这不起作用,那么您肯定遇到了配置/环境问题。如果是这样,那么您可以开始添加位,直到找到导致问题的原因。

【讨论】:

  • 谢谢史蒂夫。请求不为空。 Request.Header 为空。我们在 Windows 2016 上运行的两台不同服务器上看到了这个问题。任何可能阻止标头的功能/设置?
  • 抱歉,我不知道有什么会导致这种情况的。正如我所说,我会先创建一个更精简的网络应用程序,然后看看它是否可行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 2014-03-04
  • 1970-01-01
  • 2011-10-18
相关资源
最近更新 更多