2016-08-29 8 views
7

मैं उसी प्रोजेक्ट में एमवीसी कंट्रोलर और वेबएपीआई नियंत्रक का उपयोग करने की कोशिश कर रहा हूं लेकिन मुझे वेबपी के लिए 404 त्रुटियां मिलीं। मैंने 2015 बनाम एमवीसी प्रोजेक्ट के रूप में प्रोजेक्ट शुरू किया लेकिन फिर वेबपी कंट्रोल और अतिरिक्त कोड के साथ यह 404 त्रुटिउसी प्रोजेक्ट में एमवीसी कंट्रोलर और वेबएपीआई कंट्रोलर का उपयोग कैसे करें

संभव समाधान क्या हो सकता है। मैं Stackoverflow पर कुछ समाधान की कोशिश की है, लेकिन वे काम नहीं किया था उनमें से एक लिंक नीचे है (वहाँ पर स्वीकार किए जाते हैं उत्तर) All ASP.NET Web API controllers return 404

Global.asax फ़ाइल कोड:

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 फ़ाइल

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

     } 
    } 

मार्ग कॉन्फ़िग फ़ाइल कोड

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

     } 
    } 

वेबएपीआई नियंत्रक कोड

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

भी रही NUGET ही समाधान करने में त्रुटि पुनर्स्थापित Error Nuget failed to restore PNG

+1

क्या करता है की तरह है कि आप कॉल करने के लिए कोशिश कर रहे हैं नियंत्रक देखो? –

+0

आप कहां 'WebApiConfig.Register' कहलाते हैं? – Richard

+0

@MitchelSellers नियंत्रक कोड जोड़ने के लिए जा रहे हैं – user3177519

उत्तर

15

आप वेब एपीआई के लिए मार्ग रजिस्टर करने की आवश्यकता पहले MVC के लिए मार्ग दर्ज की , इसलिए मूल रूप से आपका App_Start() फ़ंक्शन इस तरह दिखना चाहिए:

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

जोड़ा गया यह खेद नहीं है। असल में मैंने पहले से ही कोशिश की है यदि आप प्रश्न के तहत टिप्पणियों में मेरी 5 वीं टिप्पणी देखते हैं। मैंने वहां उल्लेख किया है कि मैंने RegisterAllAreas() के बाद कोड की इस पंक्ति को रखा है। मैंने अब प्रश्न कोड को भी अपडेट किया है – user3177519

+2

क्या आप वाकई अपने एपीआई नियंत्रक को सही तरीके से कॉल कर रहे हैं? क्योंकि यह पूरी तरह से मेरी तरफ काम कर रहा है। इस यूआरएल को कॉल करने का प्रयास करें, लेकिन स्पष्ट रूप से मेरे पोर्ट नंबर को अपने साथ बदलें - http: // localhost: 37294/एपीआई/MAILAPI –

+0

धन्यवाद मैं कुछ मूर्खतापूर्ण गलती कर रहा था। यह nuget त्रुटि के बाद nuget पुनर्स्थापना के कारण भी हो सकता है यह एक आकर्षण की तरह काम करता है – user3177519

0

वैश्विक असैक्स पृष्ठ की Application_Start() विधि में बस एक पंक्ति जोड़ें।

enter image description here

संबंधित मुद्दे