堆栈不足以继续安全地执行程序。 ASP.NET MVC 4

2024-01-05

我的搜索功能似乎在无限循环中继续,每次我的调试命中 POST actionresult 下面的操作时都会被触发。

在我的 Masterpage.cshtml 中,我有以下操作:

 <li>@Html.Action("Search", "Search")</li>

这是出现以下错误的部分:

堆栈不足以继续安全地执行程序。这个可以 发生的原因是调用堆栈上有太多函数或函数上有太多函数 堆栈使用过多的堆栈空间。

在我的 SearchController 中,我有一个 get 和 post actionresult 方法:

[HttpGet]
        public ActionResult Search()
        {
            return PartialView("SearchFormPartial");
        }

这会返回包含以下内容的部分视图:

@using (Ajax.BeginForm("Search", "Search", FormMethod.Post,
        new AjaxOptions
        {
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "POST"

         }))
{
<div>
    @Html.TextBox("query", "", new { @class = "search-query", @placeholder="Search news...", @spellcheck="false"})
    <input type="submit" value="Search" />
</div>      
}

它基本上是一个带有文本框和提交按钮的表单。

这是 http post 操作结果:

[HttpPost]

    public ActionResult Search(string query)
    {
        if (query != null)
        {
            try
            {

                var searchlist = rep.Search(query);

                var model = new ItemViewModel()
                {
                    NewsList = new List<NewsViewModel>()
                };

                foreach (var NewsItems in searchlist)
                {
                    FillProductToModel(model, NewsItems);
                }


                return View("Searchresults", model);
            }
            catch (Exception e)
            {
                // handle exception
            }
        }
        return View("Error");


    }

它返回一个带有视图模型的视图,其中包含与查询匹配的项目。

当我调试它时,一切都运行良好,但一切似乎都在无限重复。

搜索结果的视图如下所示:

@model Namespace.ViewModels.ItemViewModel
@if (Model.NewsList.Count == 0)
{
    <h3 class="text-error">No items matched your search query!</h3>
}
else
{
    foreach (var result in Model.NewsList)
    {
        // display search results
    }
}

这里究竟出了什么问题导致了这个无限循环?我该如何解决它?

在堆栈跟踪中我发现了这些异常

[HttpException (0x80004005): Error executing child request for handler

'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'。]

这个异常似乎不断重复


Html.Action在母版页中通过 POST 请求调用 Search 方法,因此框架不会调用返回部分视图的操作,而是调用返回母版页 ViewResult 的操作。同样的事情会再次发生,并且您将进行递归调用。

最简单的解决方案是重命名响应 POST 请求的搜索操作。另请确保您的表单发布到此操作,但保持不变Html.Action call.

看起来框架仍然会尝试找到可以响应 POST 请求的操作。去除HttpGet搜索操作的属性将解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

堆栈不足以继续安全地执行程序。 ASP.NET MVC 4 的相关文章

随机推荐

  • 使 dt 和 dd 具有相同的高度以在 dt 上应用背景颜色

    我有这个标记 dl class item tabs details dt Lot Size dt dd 324 sq meters dd dt Baths dt dd 2 dd dt Full Description dt dd p Hou
  • extjs 4树通过其内部id(而不是通过记录索引)选择特定节点

    我正在尝试将数据视图 资源管理器窗口 与树 目录树 同步 当我单击数据视图上的元素时 我希望在树上选择相同的节点 问题是使用tree getSelectionModel select index 不允许我通过节点的内部 id 我在树存储中提
  • 如何将参数传递给 Dockerfile?

    我正在使用 RUN 指令Dockerfile安装 rpm RUN yum y install samplerpm 2 3 但是 我想传递值 2 3 作为参数 我的 RUN 指令应该类似于 RUN yum y install samplerp
  • 蓝牙 GATT - onServicesDiscovered(BluetoothGatt gatt, int status) 不包含所有服务

    我有代码连接到并尝试发现广告自定义服务的自定义 BLE 服务器设备提供的所有服务 代码works on 搭载 Android 5 1 的 Nexus 5 三星 SM T320 搭载 Android 4 4 2 中兴 Blade Vec 4G
  • git-svn:自动导入/创建 svn 修订版作为 git 标签

    我正在使用 git svn 来处理 svn 存储库 吉特master分支是svn的镜像trunk分支 唯一使用的 svn 分支 即 master 分支和 trunk 分支上的元素之间存在一对一的关系 我想要有与 svn 修订相对应的 git
  • 我应该将 .vcxproj.filter 文件添加到源代码管理吗?

    在评估 Visual Studio 2010 Beta 2 时 我看到在转换后的目录中 我的vcproj文件变成了vcxproj文件 还有vcxproj 过滤器每个项目旁边的文件似乎包含文件夹结构的描述 源文件 头文件等 您认为这些过滤器文
  • .Net Framework:当未捕获异常时,不会调用Finally块[重复]

    这个问题在这里已经有答案了 一个简单的控制台应用程序 在 Visual Studio 2019 Net Framework 4 7 Windows 中 static void Main string args try Console Wri
  • 禁用表单提交上的提交按钮的问题

    我正在使用 jQuery 禁用提交插件 但我遇到了问题 如果我禁用提交按钮 它们不会传递回服务器 因此我无法判断按下了哪个按钮 这是正常的吗 我能做些什么吗 我真的不想重组我的网站 所以我必须在表单提交时设置一个变量来告诉按下了哪个按钮 有
  • SFML 在 Windows 下加载字体时出错

    我一直在尝试使用 SFML 开发适用于 Windows 和 Linux 的跨平台应用程序 到目前为止一切都很顺利 除了 Windows 版本似乎无法加载字体 不过我在 Linux 下没有任何问题 我做了研究 并根据我执行的位置确保文件就位
  • 在Python中使用Popen执行Powershell脚本,如何获取Powershell脚本的输出并将其更新到网页?

    我创建了一个带有按钮的简单 HTML 当用户单击该按钮时 它将调用在服务器端执行的Python文件 在Python文件中 我使用Popen调用Powershell脚本 如下代码 command line r C WINDOWS system
  • 在Python中组合模块文件

    有没有一种方法可以将 Python 文件组合在一起 类似于 Java 中的 JAR 我需要一种打包 Python 类和函数集的方法 但与标准模块不同 我希望它位于一个文件中 在寻找同一问题的解决方案后 我最终编写了一个简单的工具 它将多个
  • 如何从Flash加载flex swf?

    我有一些在 Flex 中编译的 swf 我想将其加载到 flash pro 中的影片剪辑中 那么如何在 Flash CS4 中加载 flex swf 呢 怎么做这样的事情 您可以在这里阅读更多相关信息 http troygilbert co
  • Cakephp 路由前缀

    我的应用程序有 3 种不同的布局 与内容的不同部分相关 我想定义我的 url s 以便他们在开头的 ex 中包含该部分 mypage com part1 controller 我不知道如何改变路线来实现这一点 附 我不想要普通的前缀路由 其
  • 如何在日志文件名中的文件扩展名之前附加滚动索引

    我正在使用RollingLogFileAppender它工作得很好并且正在滚动到新文件中 但它在文件的最后添加了 1 2 等 所以我最终得到 log 1 log 2等等 所以从技术上讲 每个文件都有一个资源管理器不知道的新扩展名 所以我不能
  • scanf 不超过缓冲区溢出

    我有一个缓冲区 我不希望用户输入的字符多于缓冲区可以容纳的字符 以避免缓冲区溢出 我在用scanf并做了这样的事情 char buffer 30 0 scanf 30s buffer 但是 我知道如果用户输入超过 30 个 我会受到保护 但
  • 用户空间和内核线程之间的共享内存

    我正在开发一个涉及 kthreads 的内核应用程序 我创建一个结构数组并在用户空间中使用 malloc 分配内存 然后我调用系统调用 我实现的 并将数组的地址传递到内核空间 在我创建的系统调用处理程序中 我创建了 2 个 kthreads
  • 使用分组依据和按日期排序的 SQL 选择

    我正在使用 SQL Server 2008 我想知道是否可以在一个 select 语句中完成我的查询 而无需子查询 如果记录中的字段在最近 10 个创建的记录中为 true 我想将变量设置为 true 如果该字段在最后 10 个记录中为 t
  • Google GData .Net OAuthUtil.GetAccessToken 400 错误请求

    我正在尝试通过 Google Net GData 客户端库生成 OAuth 访问令牌 我一直在使用中的说明http code google com apis gdata docs auth oauth html http code goog
  • 在数据库中使用DXL导入SSJS脚本库

    我们需要使用 DXL 在数据库中导入 SSJS 库 为此 我们编写了一个 Java 代理 其代码如下 import lotus domino public class JavaAgent extends AgentBase private
  • 堆栈不足以继续安全地执行程序。 ASP.NET MVC 4

    我的搜索功能似乎在无限循环中继续 每次我的调试命中 POST actionresult 下面的操作时都会被触发 在我的 Masterpage cshtml 中 我有以下操作 li Html Action Search Search li 这