Ich habe eine URL zu einem WebAPI, wie folgt aus:url von WebAPI, wie in mvc konfigurieren
http://Dynamicweb8724.nl/webapi/NavToDW/?process="
und im MVC-Projekt Ich habe diese Dateien:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "DefaultApi",
url: "DefaultApi/{action}/{id}",
defaults: new { controller = "Guestbook", action = "Index", id = UrlParameter.Optional, PageID = 1067 }
);
}
}
public class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "webapi/NavToDW",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
und die globale .asax-Datei:
public class Global : System.Web.HttpApplication
{
public void Application_Start(object sender, EventArgs e)
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new Dynamicweb.AspNet.Views.RazorViewEngine());
ViewEngines.Engines.Add(new Dynamicweb.AspNet.Views.WebFormViewEngine());
// Fires when the application is started
Dynamicweb.Frontend.GlobalAsaxHandler.Application_Start(sender, e);
GlobalConfiguration.Configuration.EnsureInitialized();
}
public void Session_Start(object sender, EventArgs e)
{
// Fires when the session is started
Dynamicweb.Frontend.GlobalAsaxHandler.Session_Start(sender, e);
}
public void Application_BeginRequest(object sender, EventArgs e)
{
// Fires at the beginning of each request
//GlobalAsax.Application_BeginRequest(sender, e);
}
public void Application_AuthenticateRequest(object sender, EventArgs e)
{
// Fires upon attempting to authenticate the use
Dynamicweb.Frontend.GlobalAsaxHandler.Application_AuthenticateRequest(sender, e);
}
public void Application_Error(object sender, EventArgs e)
{
// Fires when an error occurs
Dynamicweb.Frontend.GlobalAsaxHandler.Application_Error(sender, e);
}
public void Session_End(object sender, EventArgs e)
{
// Fires when the session ends
Dynamicweb.Frontend.GlobalAsaxHandler.Session_End(sender, e);
}
public void Application_End(object sender, EventArgs e)
{
// Fires when the application ends
Dynamicweb.Frontend.GlobalAsaxHandler.Application_End(sender, e);
}
public void Application_OnPreRequestHandlerExecute(object sender, EventArgs e)
{
Dynamicweb.Frontend.GlobalAsaxHandler.Application_OnPreRequestHandlerExecute(sender, e);
}
}
So kann ich verbinden. Aber ich kann nicht auf den spezifischen Link gehen, wie folgt aus: http://dynamicweb8724.nl/webapi/NavToDW/?process=
das Ergebnis ist folgendes:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace>
bij System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes() bij System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request) bij System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext)
</StackTrace>
</Error>
Controller:
public class GuestbookApiControllerController : ApiController
{
// GET: GuestbookApiController
public IEnumerable<GuestbookEntry> Get()
{
return ItemManager.Storage.GetByParentPageId<GuestbookEntry>(1067);
}
}
Also, was ich ändern muss?
Aber wenn ich legte einen Haltepunkt an dieser Methode:
public void Application_Start(object sender, EventArgs e)
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new Dynamicweb.AspNet.Views.RazorViewEngine());
ViewEngines.Engines.Add(new Dynamicweb.AspNet.Views.WebFormViewEngine());
// Fires when the application is started
//GlobalConfiguration.Configuration.MapHttpAttributeRoutes();
GlobalAsaxHandler.Application_Start(sender, e);
GlobalConfiguration.Configuration.EnsureInitialized();
}
traf es doesnt.
Wo ist Ihr 'ApiController' Code? –
Sorry, aber es gibt keinen ApiController – InfinityGoesAround
Warum konfigurieren Sie Web-API, wenn Sie es nicht verwenden, dann? Jeder Controller in Web-API * muss von ApiController erben. Ich empfehle Ihnen dringend, mehr über Web API zu lesen, da es viele Probleme mit Ihrem Code gibt und sie nicht adressierbar sind, wenn Sie das Thema nicht kennen. –