仅在设备上的ASP .NET MVC中414(request-uri太长) - 51度设备检测?

时间:2015-02-12 11:39:33

标签: asp.net-mvc mobile 51degrees

我依靠@Request.Browser.IsMobileDevice来区分ASP .NET MVC网站的访问者。

我正在使用51 Degrees库。但是,当从移动设备浏览某些图片时,我收到错误414 (request-uri too long)。在PC上,这种情况不会发生,只能在手机上进行。

堆栈显示PathTooLongException位于:

   à System.IO.PathHelper.GetFullPathName()
   à System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   à System.IO.Path.GetFullPathInternal(String path)
   à System.Security.Util.StringExpressionSet.CanonicalizePath(String path, Boolean needFullPath)
   à System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath)
   à System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
   à System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String path)
   à System.Web.InternalSecurityPermissions.PathDiscovery(String path)
   à System.Web.HttpRequest.MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, Boolean allowCrossAppMapping)
   à System.Web.HttpServerUtility.MapPath(String path)
   à FiftyOne.Foundation.Mobile.Detection.Feature.ImageOptimiser.OptimisedImageResponse(HttpContext context)
   à FiftyOne.Foundation.Mobile.Detection.DetectorModule.OnPostAuthorizeRequest(Object sender, EventArgs e)
   à System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   à System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

似乎FiftyOne在此堆栈中。当我卸载51Degrees时,它恢复工作。但是我需要51Degrees以保持IsMobileDevice与当前设备兼容。

我缺少任何参数吗? 51degrees是版本.NET 3.1.9.3

2 个答案:

答案 0 :(得分:1)

几天前我遇到了同样的问题。我们多年来一直在使用51Degrees解决方案,但刚刚在移动设备上遇到414问题。

我最终使用" The official WURFL API for .NET"。易于实现,并提供我们从WURFL数据存储库中读取所需的所有功能。现在我不再收到414错误了。

答案 1 :(得分:0)

如果您发现自己处于类似情况,可以:

  1. 转到 51Degrees.config 文件
  2. 打开它
  3. 向下滚动,直至找到 imageOptimisation 部分
  4. 启用设置为 false
  5. 保存并重新启动应用程序
  6. 解决414问题的另一种方法。