2012-07-08 11 views
18

उपयोग करने के लिए मैं SlashBaseService नाम के एक आधार ApiController के साथ एक WebAPI परियोजना है की कोशिश कर रहा:हो रही है "नहीं प्रकार मिला था नियंत्रक 'SampleSlashBaseService' नाम से मेल खाता है कि" जब वेबएपीआई

[RouteArea("uBase")] 
public abstract class SlashBaseService : ApiController 
{ 
} 

जिसके परिणामस्वरूप dll एक WebForms में प्रयोग किया जाता है

:

RouteTable.Routes.MapHttpAttributeRoutes(config => 
{ 
    // Get all services inheriting from SlashBaseService 
    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) 
    { 
     foreach (var type in assembly.GetTypes()) 
     { 
      if (type.IsSubclassOf(typeof(SlashBaseService))) 
      { 
       // Scan assembly 
       config.ScanAssembly(assembly); 

       // Skip the remaining types in this assembly 
       break; 
      } 
     } 
    } 
}); 

RouteTable.Routes.MapHttpRoute(
    name: "DefaultBase", 
    routeTemplate: "base/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional }); 

मैं भी एक अलग विधानसभा में एक testservice है: परियोजना तो मैं भी निम्न कोड के साथ एक WebActivator वर्ग मार्गों उत्पन्न करने के लिए है

सभी सुंदर साधारण चीज़ें। समस्या यह है कि जब मैं उत्पन्न करता हूं तो यूआरएल में से किसी एक पर जाने का प्रयास करता हूं, मुझे निम्न संदेश मिलता है:

कोई प्रकार नहीं मिला जो 'नमूना स्लैशबेस सेवा' नामक नियंत्रक से मेल खाता है।

/routes.axd से मार्ग सूची भी सही दिखती है।

उत्तर

53

समस्या मिली।

ApiControllers कक्षा के नामों को "नियंत्रक" के साथ प्रत्यय करने की आवश्यकता है, और मेरा नहीं था। इसे SampleSlashBaseController में बदलकर समस्या हल हो गई।

नोट: यह "सेवा" के साथ प्रत्यय के रूप में मैंने किया था संभव है, लेकिन फिर तुम यहाँ वर्णित की तरह एक कस्टम IHttpControllerSelector लागू करना: एक ही साथ http://netmvc.blogspot.no/2012/06/aspnet-mvc-4-webapi-support-areas-in.html

+7

मैंने विपरीत रेखाओं के साथ कुछ किया। मेरे पास नियंत्रक था जहां यह नहीं होना चाहिए था! 'डिफ़ॉल्ट: नया {नियंत्रक =" एपीकंट्रोलर "}' डिफ़ॉल्ट होना चाहिए: नया {नियंत्रक = "एपीआई"} 'आपको अपने' WebApiConfig.cs' में 'नियंत्रक' को ओमिट करना होगा! – Skovy

+0

यह मेरे साथ हुआ जहां मैंने WebApiConfig.cs पर नियंत्रक प्रत्यय छोड़ा। आपकी टिप्पणी ने मेरी मदद की :) –

+1

मुझे यह पता लगाने से पहले मैं अपने बालों को खींच रहा था। बनाने के लिए क्या एक मूर्ख त्रुटि है। धन्यवाद –

2

मेरे मामले में, वहाँ थे दो नियंत्रकों नाम, विभिन्न फ़ोल्डरों में। उन्हें नाम बदलने से तुरंत समस्या हल हो गई।

9

आपको यह भी सुनिश्चित नियंत्रक वर्ग लोक

+1

उनकी कक्षा पहले से ही सार्वजनिक है .... – DavidG

+1

यह प्रश्न पहले से ही उत्तर दिया गया है, लेकिन मेरी टिप्पणी का मुद्दा मेरे पास था। मुझे एक ही त्रुटि थी हालांकि मैं सार्वजनिक गायब था। मैं इसे यहां छोड़ना चाहता था अगर यह किसी और की मदद करेगा। – Eranga

+2

मेरी मदद की, तो आपके उत्तर के लिए धन्यवाद – paiden

6

मेरे मामले नियंत्रक ठीक से परिभाषित किया गया है बनाने की जरूरत है, लेकिन सार्वजनिक रूप में चिह्नित नहीं किया गया था।

1

इसके लायक होने के लिए, मैं इसमें भाग गया और मेरी समस्या यह थी कि मेरी मैन्युअल रूप से जोड़ा गया वर्ग एपीकंट्रोलर से विरासत में नहीं था। कक्षा परिभाषा public class QueueController : ApiControllerpublic class QueueController होने की आवश्यकता नहीं है। अनदेखा करने के लिए एक बेवकूफ बात क्या है।

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

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