İki denetleyicili bir MVC uygulamasına sahibim, Biri WebAPiApplication
olarak çalıştı ve ikincisi düzenli olarak MvCApplication
olarak çalıştı. Rotayı yalnızca API'nin erişilebilir olduğu bir şekilde yapılandırdım.Nasıl MvcApplication ve WebApiApplication bir ad alanında karıştırılır?
Her iki denetleyiciye erişebileceğim şekilde yapılandırmama yardımcı olabilir misiniz?
DefaultController
numaralı API'ye http://localhost/api/data
işaretini kullanarak erişebilirim. Ancak, MvcApplication Index yöntemine erişemiyorum. Benim beklentim http://localhost/Notification
poinitng tarafından erişmek için ama 404 hata alıyorum! İşte
//DefaultController.cs
namespace MyApp.Controllers
{
[RoutePrefix("api")]
public class DefaultController : ApiController
{
[Route("data")]
[AcceptVerbs("GET")]
public HttpResponseMessage GetMeData()
{
XYZ...
}
}
}
//NotificationController.cs
namespace MyApp.Controllers
{
public class NotificationController : Controller
{
public ActionResult Index()
{
return this.Jsonp(Rep.All());
}
}
}
Ve nasıl kurulum bu iki denetleyicileri için yolları: @ChimaOsuji yorumlarına belirtildiği gibi
//Global.asax.cs
namespace MyApp
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Notification", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Notification", action = "Index" } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}
//WebApiConfig.cs
namespace MyApp
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
İki uygulamalarını WebApiApplication ve MvcApplication oluşturduk. Sadece MVC ve API denetleyicileri için rotaları kaydettiğiniz bir taneye ihtiyacınız var. –
@ ChimaOsuji size gözlem doğru. Mümkünse hızlı bir örnek göster. – Nkosi
@ChimaOsuji Girişiniz için teşekkürler, bir örnek gönderir misiniz? – user37750