Sitecore AJAX帖子:无法调用操作方法
我们已经开发了一个包含多个控制器的站点,这些控制器接受GET、POST和return视图以及JSON,在我们的开发环境中一切都很好 但是在客户端的acceptance server上,我们遇到了一个问题:所有GET都很好地返回了它们的结果,但是POST返回了所描述的错误。堆栈跟踪是相同的Sitecore AJAX帖子:无法调用操作方法,ajax,sitecore,sitecore8,Ajax,Sitecore,Sitecore8,我们已经开发了一个包含多个控制器的站点,这些控制器接受GET、POST和return视图以及JSON,在我们的开发环境中一切都很好 但是在客户端的acceptance server上,我们遇到了一个问题:所有GET都很好地返回了它们的结果,但是POST返回了所描述的错误。堆栈跟踪是相同的 System.InvalidOperationException: Could not invoke action method: askquestion. Controller name: Assistanc
System.InvalidOperationException: Could not invoke action method: askquestion. Controller name: Assistance. Controller type: [Namespace].Assistance.Controllers.AssistanceController
我们使用为每个控制器定义路由的方法:
处理器如下所示:
公共类注册器WebAPI路由
{
公共作废流程(PipelineArgs args)
{
RouteTable.Routes.MapRoute(
名称:“Assistance.Api”,
url:“api/assistance/{action}”,
默认值:新建{controller=“Assistance”});
}
}
动作方法是这样的
[HttpPost]
公共行动结果AskQuestion(AskQuestionViewModel模型)
{
if(ModelState.IsValid)
{
....
返回视图(“确认”);
}
其他的
{
返回视图(模型);
}
}
发生了什么事?Sitecore以某种方式阻止AJAX POST请求。当然,这是配置问题。我应该去哪里看?好的,我已经找到了问题的根源 他们有一个URL重写模块,其中有一条规则:LowercaseUrole1(也可以是任何其他规则)。但当它成功的时候,请求变成了“得到”。然后控制器找不到相应的GET操作,瞧:无法调用操作方法 我只是在重写规则中添加了这个异常,它就成功了
您在哪个文件中进行了这些修改?在web.config中。在IIS中安装URL重写模块后,当您说“他们”时,您是指Sitecore还是您的客户端?是的,“他们”是指客户端