2017-11-30 1 views
1

Ich habe eine Web-API, die in einer WPF C# -Anwendung ausgeführt wird. Ich habe Owin benutzt, um es zu implementieren. Wenn ich eine Anfrage mit dem Präfix /api sende, funktioniert es wie erwartet.C# -Web-API-Routenpräfix

http://localhost:8080/api/test/config?no=7 

Allerdings muss ich das Präfix/api entfernen. Wenn ich die Anfrage unten versuche, funktioniert es nicht, wenn ich den Beispielcode unten ausprobiere.

http://localhost:8080/test/config?no=7 

Ist es möglich, API-Wort von Anfragen zu entfernen?

Hier ist mein Code:

WebApp.Start<Startup>(url: "http://*:8080/"); 

    class Startup 
    { 
     Type ValuesControllerType = typeof(TestController); 

     public void Configuration(IAppBuilder Builder) 
     { 
      var Instance = new HttpConfiguration(); 

      Instance.MapHttpAttributeRoutes(); 

      Instance.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "{controller}/{action}/{request}", 
       defaults: new { request = RouteParameter.Optional } 
      ); 

      Builder.UseWebApi(Instance); 
     } 
    } 

    [RoutePrefix("test")] 
    public class TestController : ApiController 
    {  
     [HttpGet] 
     [Route("config")] 
     public string Config(string No) 
     { 
      try 
      { 
       return No; 
      } 
      catch (Exception e) 
      { 
       return string.Empty; 
      } 
     } 
    } 

Ich habe versucht, die Antwort in C# web api route for a webservice aber hat nicht funktioniert.

bekomme ich folgende Fehlermeldung:

HTTP Error 503. The service is unavailable. 
+0

Könnten Sie en Fehler zeigen, wenn '[RoutePrefix ("test")]'? – Marusyk

+0

Ich habe die Frage bearbeitet. Ich erhalte Service nicht verfügbar Fehler. – Demir

Antwort

1

Auf dem Rest api Ihre WebApiConfig.cs öffnen sollten Sie den folgenden Code finden:

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}" 
     ); 

Versuchen api von dort

+0

das ist ungerade nach [this] (https://stackoverflow.com/questions/37772816/remove-api-prefix-from-web-api-url) sollte es funktionieren. ist die Zeile 'config.MapHttpAttributeRoutes();' noch aktiviert. und wenn du einen Debug-Punkt in die "webapiconfig.cs" platzierst, geht es dann immer noch dort rein oder kommst du nur in deine owin Klasse? – Dragonvil

1

ich konfrontiert Entfernen das gleiche Problem in. Net Core 2 WebAPI-Projekt

Hier ist meine Lösung

[Produces("application/json")] 
[Route("[controller]")] 
public class DefaultController : Controller 
{ 
    [Route("getUser")] 

    public IActionResult GetUsers() 
    { 
     return Ok(); 
    } 
} 

die Adresse http://localhost:port/default/getuser