gpt4 book ai didi

ajax - Sitecore AJAX POST : Could not invoke action method

转载 作者:行者123 更新时间:2023-12-02 01:23:12 25 4
gpt4 key购买 nike

我们开发了一个包含多个 Controller 的站点,这些 Controller 接受 GET 和 POST 并返回 View 和 JSON,并且在我们的开发环境中一切正常。

但是在客户端的接受服务器上我们有一个问题:所有的 GET 都很好地返回了他们的结果,但是 POST 返回了一个错误,描述为 here by John West . Stacktrace 是相同的。

System.InvalidOperationException: Could not invoke action method: askquestion. Controller name: Assistance. Controller type: [Namespace].Assistance.Controllers.AssistanceController

我们使用为每个 Controller 定义路由的方法:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<initialize>
<processor type="[Namespace].Assistance.Pipelines.RegisterWebApiRoutes, [Namespace].Assistance"
patch:before="processor[@type='Sitecore.Mvc.Pipelines.Loader.InitializeRoutes, Sitecore.Mvc']" />
</initialize>
</pipelines>
</sitecore>
</configuration>

处理器是这​​样的:

public class RegisterWebApiRoutes
{
public void Process(PipelineArgs args)
{
RouteTable.Routes.MapRoute(
name: "Assistance.Api",
url: "api/assistance/{action}",
defaults:new {controller = "Assistance" });
}
}

Action 方法是这样的

[HttpPost]
public ActionResult AskQuestion(AskQuestionViewModel model)
{
if (ModelState.IsValid)
{
....

return View("Confirmation");
}
else
{
return View(model);
}
}

怎么了? Sitecore 以某种方式阻止了 AJAX POST 请求。当然,这是配置问题。我应该去哪里看?

最佳答案

好的,我找到了问题的根源。

他们有一个规则的 URL 重写模块:LowerCaseRule1(或者它可能是任何其他规则)。但是当它成功时,请求变成了 GET。然后 Controller 找不到相应的 GET Action ,瞧:无法调用 Action 方法。

我只是在重写规则中添加了异常并且它起作用了。

<rewrite>
<rules>
<rule name="LowerCaseRule1" stopProcessing="true">
<match url="[A-Z]" ignoreCase="false" />
<action type="Redirect" redirectType="Permanent" url="{ToLower:{URL}}" />
<conditions>
<add input="{URL}" pattern="^.*\.(axd|ashx|asmx|lic|ico|swf|less|aspx|ascx|css|js|jpg|jpeg|png|gif)$" negate="true" ignoreCase="true" />

<!-- here is my exception -->
<add input="{URL}" pattern="/api/assistance" negate="true" />
</conditions>
</rule>
</rules>
</rewrite>

关于ajax - Sitecore AJAX POST : Could not invoke action method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38761739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com