Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sitecore AJAX帖子:无法调用操作方法_Ajax_Sitecore_Sitecore8 - Fatal编程技术网

Sitecore AJAX帖子:无法调用操作方法

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

我们已经开发了一个包含多个控制器的站点,这些控制器接受GET、POST和return视图以及JSON,在我们的开发环境中一切都很好

但是在客户端的acceptance server上,我们遇到了一个问题:所有GET都很好地返回了它们的结果,但是POST返回了所描述的错误。堆栈跟踪是相同的

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还是您的客户端?是的,“他们”是指客户端