Dopo l'aggiornamento alla V8.1 dalla V6.1, il nostro codice personalizzato MVC non funzionava, restituiva 404 (il codice personalizzato è alcune API che leggono i dati di contenuto e commercio utilizzando le API di Sitefinity).Sitefinity 8.1 instradamento personalizzato MVC non funzionante
In base alla documentazione "here", si diceva che "Bootstrapper.MVC.MapRoute è stato rimosso. Chiama invece RouteTable.Routes.MapRoute (System.Web.Mvc)." , Così ho cambiato il mio codice da
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Bootstrapper.MVC.MapRoute(
"ExternalAccess",
"baseApi/{controller}/{action}/{id}",
new { controller = "MvcMainApiCntr", action = "Index", id = "" }
);
}
a
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"ExternalAccess",
"baseApi/{controller}/{action}/{id}",
new { controller = "MvcMainApiCntr", action = "Index", id = "" }
);
}
Ma il percorso non funziona ancora.
Ecco un esempio delle nostre classi MVC:
using System;
using System.IO;
using System.Net;
using System.Web.Mvc;
using HtmlAgilityPack;
using Telerik.Sitefinity.Abstractions;
namespace SitefinityWebApp.Mvc.Controllers
{
public class SharedAssetsController : Controller
{
[HttpGet]
public ViewResult GetScripts()
{
var rootUrl = anyfunction();
return View("Scripts", (object) rootUrl);
}
}
}
Ed ecco come ci leghiamo routing in global.ascx
:
protected void Application_Start(object sender, EventArgs e)
{
RouteConfig.RegisterRoutes(RouteTable.Routes); //the first method in that post
Bootstrap.BootstrapSitefinity();
}
Qualche idea su come possiamo resole che?
Puoi spiegare quali problemi potrebbero essere causati da: "E anche nel 'baseApi' cerca di evitare di utilizzare il prefisso 'ext' in quanto tale prefisso viene utilizzato da Sitefinity e potrebbe avere alcuni problemi."? E come questo è legato alla tua domanda? –
Il problema che noi chiamiamo "RegisterRoutes" da Global.asax.cs "Application_Start()". ma dovrebbe essere spostato nel gestore di eventi di "Bootstrapper.Initialized" ==> nel nostro caso "Bootstrapper.Initialized + = OnSitefinityAppInitialized", a condizione che venga eseguito solo quando un nome di comando come "e.CommandName ==" RegisterRoutes " ". In realtà non ne conosco il motivo esatto, ma questa è stata la raccomandazione del team di supporto di Sitefinity e questa soluzione ha risolto il problema precedente/e ora tutte le mie API e le chiamate MVC funzionano di nuovo bene in sitefinity v8.1. –
riguardo al prefisso 'ext', in realtà è stato raccomandato dal team di supporto per essere modificato, ma non l'ho modificato e funziona bene con me. –