【问题标题】:MVC - "This page can’t be displayed" - IE only with no exceptionMVC - “此页面无法显示” - IE 无异常
【发布时间】:2016-10-31 11:08:18
【问题描述】:

在我的控制器 Index() 方法中,我从数据库中检索一些数据,然后将内容返回到视图:

    [HttpGet]
    public ViewResult Index()
    {
        var model = new ItemsModel();

        model.Items = itemService.GetSomeItems(User.RoleId);

        return View(model);
    }

这在 Chrome 和 Firefox 上总是可以完美运行,但 IE 11 仅取决于 GetSomeItems 方法返回的内容。

当获取的项目不多时,IE 返回视图没有问题。但是如果有,例如返回 300 个项目(调用大约需要 4 秒),IE 会等待大约 5-8 秒,然后才会显示“此页面无法显示”页面。

结果因服务方法中返回的内容而异 - 尽管我不确定是项目的数量、内容还是调用时间。

当我调试应用程序时,它毫无例外地完美运行,只是最终出现“无法显示此页面”页面。这不是我的缓存导致问题,因为其他用户仅在 IE 上遇到完全相同的问题。我尝试在 Index.cshtml 的 jquery $(document).ready 方法中放置调试点,但这些都没有达到。

IE 是什么原因导致了这种情况?我知道有内置的超时 (browser timeouts while asp.net application keeps running),但是需要 4 秒的通话并不能解释上述情况。有任何想法吗?调用背后的访问器使用实体框架,如果这可能是罪魁祸首的话。使用 F12 对其他 IE 版本进行了测试,对于 IE 11、10、9 也失败了。

【问题讨论】:

    标签: asp.net-mvc internet-explorer


    【解决方案1】:

    该问题是由于页面上包含太多 AntiForgeryToken 时 IE 崩溃造成的。

    当 GetSomeItems() 返回超过 236 个对象时,这些对象会在视图中循环,并导致大约 240 行 @Html.AntiForgeryToken() 行 - 这是 IE 无法处理的。

    【讨论】:

    • 这对我很有帮助。我遇到了同样的问题。顺便说一句,你做了什么?您是否为每个子表单重复使用相同的 Anti-Forgery-Token?那安全吗?有用吗?
    猜你喜欢
    • 1970-01-01
    • 2017-09-13
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2012-09-23
    相关资源
    最近更新 更多