मैं लंबे समय से वेब एपीआई 2 काम करने की कोशिश कर रहा हूं। मैंने इंटरनेट पर बहुत सारे लेख और पोस्ट पढ़े हैं, लेकिन अब तक मैं दुर्भाग्यपूर्ण हूं।वेब एपीआई 2 काम नहीं कर रहा है (404)
मुझे बस काम करने वाली सरल वेब एपीआई विधि प्राप्त करने की आवश्यकता है, लेकिन किसी कारण से मुझे अभी भी 404 विधि नहीं मिल रही है। मैं वास्तव में अब नहीं जानता, जहां समस्या हो सकती है क्योंकि ऐसा लगता है कि सबकुछ ठीक है।
मैंने विशेषताओं, कॉन्फ़िगरेशन आदि के कई बदलावों की कोशिश की है।
Global.asax
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(WebApiConfig.Register);
WebApiConfig.cs
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(x => x.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
ApiController
public class ContactFormController : ApiController
{
[Route("~/api/sendemail")]
[HttpPost()]
public IHttpActionResult SendEmail(ContactFormModel contactForm)
{
return Ok();
}
}
मॉडल::
public class ContactFormModel
{
public string Name { get; set; }
public string Email { get; set; }
public string Subject { get; set; }
public string Message { get; set; }
}
मैं इस कोड के साथ खत्म हो
jQuery कोड
var jsonData = { "Name": name.val(), "Email": email.val(), "Subject": subject.val(), "Message": comment.val() };
$.ajax({
url: "api/sendemail",
type: "POST",
data: jsonData,
cache: false,
...
});
आप देख सकते हैं, यह MVC 5 + जाल एपीआई है 2.
मदद के लिए धन्यवाद। इतना आसान बात और कुछ भी काम नहीं कर रहा है।
एपी मार्गों का मूल्यांकन पहले करना चाहिए, या आपको अधिक सख्त एमवीसी मार्ग बनाने की आवश्यकता है (जैसे ढांचा 'एपीकंट्रोलर' की तलाश करने का प्रयास नहीं करता है।) यह एमवीसी 5-विशिष्ट व्यवहार – chemitaxis
नहीं है आप बहुत ही अच्छे हैं !!! यह काम करता है, केवल मुझे सुझाए गए मार्ग से शुरू/हटा देना था [मार्ग ("/ api/sendemail")]। मैं इसे उत्तर के रूप में स्वीकार करूंगा। – Daniel
एक खाली परियोजना से शुरू, मैं फ़िल्टरकॉन्फिग और रूट कॉन्फिग भाग खो रहा था। टेम्पलेट के आधार पर उन वर्गों को जोड़ना चाल था। – Jerther