Ich habe etwas herumschauen und stolperte nicht auf etwas ähnlich dem Problem, das ich erlebt, also dachte ich, ich würde es hier werfen und sehen, was, wenn etwas klebt.WebAPI Anfrage löst 404 Fehler ... auf die gleiche Anfrage
Ich habe eine Steuerung und Methode eingerichtet.
public class BoothAPIController : ITApiControllerBase
{
[HttpGet]
public HttpResponseMessage GetActiveAssetNumbersLike([FromUri] String id)
{
HttpResponseMessage ret;
// ... do some processing
return ret;
}
}
Die Routen sind in Global.asax einrichten
protected void Application_Start(object sender, EventArgs e)
{
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
name: "CustomApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
name: "BoothWithDateAPI",
routeTemplate: "api/{controller}/{boothID}/{year}/{month}/{day}");
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
}
Und diese beiden Anfragen ausführen einwandfrei ...
http://localhost:52211/api/BoothAPI/GetActiveAssetNumbersLike/PR
http://localhost:52211/api/BoothAPI/GetActiveAssetNumbersLike/PRN0
Dieses aber ... gibt einen 404-Fehler. ..
http://localhost:52211/api/BoothAPI/GetActiveAssetNumbersLike/PRN
Die Kopfzeile für die fehlgeschlagene Anfrage sieht aus wie ...
Cache-Control →private
Content-Length →2879
Content-Type →text/html; charset=utf-8
Date →Mon, 29 Aug 2016 12:53:08 GMT
Server →Microsoft-IIS/8.0
X-AspNet-Version →4.0.30319
X-Powered-By →ASP.NET
X-SourceFiles →= [string]
Während die erfolgreichen Anforderungen aussehen
Cache-Control →no-cache
Content-Length →7731
Content-Type →application/json; charset=utf-8
Date →Mon, 29 Aug 2016 13:13:43 GMT
Expires →-1
Pragma →no-cache
Server →Microsoft-IIS/8.0
X-AspNet-Version →4.0.30319
X-Powered-By →ASP.NET
X-SourceFiles → [string]
(Shrugs) Ich weiß nicht ... Ich bin bei einem vollständigen Verlust, warum die eine Änderung der Parameter a macht Unterschied.
Ich sehe einen Unterschied auf den Content-Typ. Wenn es fehlschlägt, sendet es einen Text/HTML. Wie senden Sie diese Anfragen? Über eine Anwendung oder vielleicht über Postman? – jpgrassi
Warum legen Sie auch die Routen in Global.asax fest? Haben Sie keine WebApiConfig-Datei in Ihrem App_Start-Ordner? – jpgrassi
Die Anforderung ist identisch und wird von Postman gesendet, nur die Parameterzeichenfolge ist unterschiedlich. Soweit das Global.asax ... im Moment Bequemlichkeit. Ich habe nicht viel Konfiguration, also gab es keine Notwendigkeit, es zu lösen. Wenn die Anwendung wächst, können wir sie ein wenig umgestalten. –