2
我們開發了一個包含多個控制器的站點,它們接受GET和POST並返回視圖和JSON,並且在我們的開發環境中一切正常。Sitecore AJAX POST:無法調用操作方法
但是在客戶端的接受服務器上,我們遇到了一個問題:所有GET都會返回結果,但POST返回的錯誤描述爲here by John West。 Stacktrace是相同的。
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請求。當然,這是配置問題。我應該在哪裏看?