我们开发了一个具有多个控制器的网站,它们接受GET和POST请求并返回视图和JSON。在我们的开发环境中一切正常。但是,在客户端验收服务器上出现了问题:所有的GET请求都能成功返回结果,但是POST请求返回错误,并且这个错误在John West的博客中有描述。堆栈跟踪相同。
我们采用为每个控制器定义路由的方法:
处理器就像这样:
这个动作方法是这样的。
System.InvalidOperationException: Could not invoke action method: askquestion. Controller name: Assistance. Controller type: [Namespace].Assistance.Controllers.AssistanceController
我们采用为每个控制器定义路由的方法:
<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" });
}
}
这个动作方法是这样的。
[HttpPost]
public ActionResult AskQuestion(AskQuestionViewModel model)
{
if (ModelState.IsValid)
{
....
return View("Confirmation");
}
else
{
return View(model);
}
}
发生了什么?不知何故Sitecore阻止了AJAX POST请求。这肯定是一个配置问题。我应该在哪里查找?