Wir haben eine Site mit mehreren Controllern entwickelt, die GET und POST akzeptieren und Ansichten und JSON zurückgeben. In unserer Entwicklungsumgebung funktioniert alles einwandfrei.Sitecore AJAX POST: Aktionsmethode konnte nicht aufgerufen werden
Aber auf dem Akzeptanzserver des Clients haben wir ein Problem: Alle GETs geben ihre Ergebnisse gut zurück, aber die POSTs geben einen Fehler here by John West zurück. Der Stacktrace ist identisch.
System.InvalidOperationException: Could not invoke action method: askquestion. Controller name: Assistance. Controller type: [Namespace].Assistance.Controllers.AssistanceController
Wir verwenden den Ansatz der Route für jeden Regler zu definieren:
<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>
Der Prozessor ist wie folgt:
public class RegisterWebApiRoutes
{
public void Process(PipelineArgs args)
{
RouteTable.Routes.MapRoute(
name: "Assistance.Api",
url: "api/assistance/{action}",
defaults:new {controller = "Assistance" });
}
}
die Aktionsmethode ist wie folgt
[HttpPost]
public ActionResult AskQuestion(AskQuestionViewModel model)
{
if (ModelState.IsValid)
{
....
return View("Confirmation");
}
else
{
return View(model);
}
}
Was passiert? Irgendwie blockiert Sitecore AJAX POST Anfragen. Definitiv ist dies das Konfigurationsproblem. Wo soll ich hinschauen?