2016-08-29 37 views
7

MVC Denetleyici ve WebAPI denetleyicisini aynı projede kullanmaya çalışıyorum ancak webapi için 404 hatası aldım. 2015 yılında MVC Projesi olarak projeye başladım ancak webapi kontrolünü ekledim ve varsayılan kod ile 404 hatası veriyorMVC Denetleyici ve WebAPI Denetleyici aynı projede Nasıl Kullanılır

Olası çözüm ne olabilirdi. Ben Stackoverflow üzerinde bazı çözüm denedim ama içlerinden biri linki aşağıda (orada Kabul Cevap) All ASP.NET Web API controllers return 404

Global.asax dosyası Kodu olduğu çalıştı vermedi:

protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 
      GlobalConfiguration.Configure(WebApiConfig.Register);//WEB API 1st 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 

     } 

WEBAPI.CONFIG DOSYA

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 } 
      ); 

     } 
    } 

Rota Yapılandırma Dosyası Kod

public class RouteConfig 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 

     } 
    } 

WebAPI Kontrolör KOD

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http; 
using O365_APIs_Start_ASPNET_MVC.Models; 
using Microsoft.IdentityModel.Clients.ActiveDirectory; 
using O365_APIs_Start_ASPNET_MVC.Helpers; 
using System.Threading.Tasks; 

namespace O365_APIs_Start_ASPNET_MVC.Controllers 
{ 
    public class MAILAPIController : ApiController 
    { 
     private MailOperations _mailOperations = new MailOperations(); 
     //async Task<BackOfficeResponse<List<Country>>> 

     // GET: api/MAILAPI 
     public IEnumerable<string> Get() 
     { 
      return new string[] { "value1", "value2" }; 
     } 

     // GET: api/MAILAPI/5 
     public string Get(int id) 
     { 
      return "value"; 
     } 

     // POST: api/MAILAPI 
     public void Post([FromBody]string value) 
     { 
     } 

     // PUT: api/MAILAPI/5 
     public void Put(int id, [FromBody]string value) 
     { 
     } 

     // DELETE: api/MAILAPI/5 
     public void Delete(int id) 
     { 
     } 
    } 
} 

AYRICA Nuget MVC güzergahına kayıt Error Nuget failed to restore PNG

+1

neyi aramak çalışıyoruz böyle kontrolör görünüyor? –

+0

WebApiConfig.Register' öğesini nerede arıyorsun? – Richard

+0

@MitchelSellers denetleyici kodu ekleyecek – user3177519

cevap

15

Sen web API güzergahına kaydetmeniz gerekir ÖNCE AYNI ÇÖZÜM OLARAK HATA RESTORE BAŞLARKEN temel olarak App_Start() işlevinin şu şekilde görünmesi gerekir:

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    GlobalConfiguration.Configure(WebApiConfig.Register);//WEB API 1st 
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes);//MVC 2nd 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
} 
+0

üzgünüm çalışmıyor. Aslında, söz konusu yorumlardaki 5. yorumumu görürseniz zaten denedim. Orada, bu kod satırını RegisterAllAreas() 'dan sonra yerleştirdiğimi belirttim. Şimdi de soru kodunu güncelledim şimdi – user3177519

+2

Api kontrol cihazını doğru aradığına emin misin? Benim tarafımda mükemmel çalışıyor çünkü bu URL'yi çağırmayı dene ama açıkçası benim port numaramı seninle değiştir - http: // localhost: 37294/api/MAILAPI –

+0

Teşekkür ederim bazı aptalca hata yapıyordum. Ayrıca nuget hatası sonra nuget geri yükleme nedeniyle olabilir bir çekicilik gibi çalıştı – user3177519

0

Global asax sayfasının Application_Start() yöntemine bir satır ekleyin.

enter image description here