2016-06-12 13 views
8

मैं एक API नियंत्रकनिकालें "API" वेब एपीआई यूआरएल से उपसर्ग

public class MyController : ApiController { ... } 

डिफ़ॉल्ट रूप से मिल गया है यह यूआरएल mysite/api/My/Method को मैप किया है, और मैं इसे बिना "API" उपसर्ग URL करना चाहते हैं: mysite/My/Method

नियंत्रक विशेषता सेट करना [RoutePrefix("")] ने मेरी सहायता नहीं की।

क्या इसे प्राप्त करने के कोई अन्य तरीके हैं?

+2

'api' शब्द WebApiConfig स्थैतिक वर्ग की रजिस्टर विधि में कॉन्फ़िगर किया गया है। – Fabio

+0

क्या आप विशेषता रूटिंग या सम्मेलन-आधारित रूटिंग का उपयोग कर रहे हैं? – Nkosi

उत्तर

11

डिफ़ॉल्ट पंजीकरण आमतौर पर WebApiConfig में पाया और इस

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Attribute routing. 
     config.MapHttpAttributeRoutes(); 

     // Convention-based routing. 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

आप सम्मेलन आधारित सेटअप में routeTemplate संपादित करने की आवश्यकता की तरह लग जाता है।

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Attribute routing. 
     config.MapHttpAttributeRoutes(); 

     // Convention-based routing. 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

ध्यान दें कि अगर इस परियोजना MVC के साथ साझा किया जाता है api उपसर्ग के लिए कारण दो चौखटे के बीच के मार्ग संघर्ष से बचने के लिए किया गया था कि। यदि वेब एपीआई एकमात्र चीज इस्तेमाल की जा रही है तो कोई समस्या नहीं होनी चाहिए।

+1

मैं बस उल्लेख करता हूं कि डिफ़ॉल्ट खाता नियंत्रक के पास [रूटफ्रिक्स ("एपीआई/खाता")] है, इसलिए इस नियंत्रक के लिए भी काम करने के लिए, आपको यहां से 'api/'को भी हटाने की आवश्यकता है। –

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