Question

Je suis d'essayer de faire un auto-hébergé api web service.J'ai suivi un tuto et il fonctionne très bien sur mon ordinateur local.

localhost/api/valeurs répond fine avec le JSON.

Maintenant, j'ai un serveur lié au DNS "myserver.mycompany.com".Lorsque je démarre mon WebApi 2 sur ce serveur et essayez d'appeler myserver.mycompany.com/api/values j'ai une erreur 404 page not found.

Si je parcourir localement sur ce serveur et appeler le localhost/api/url valeurs, il fonctionne très bien.

Voici le code de Démarrage de la classe :

using Owin;
using System.Web.Http;

namespace SelfHostedWebApi2
{
public class Startup
{
    // This code configures Web API. The Startup class is specified as a type
    // parameter in the WebApp.Start method.
    public void Configuration(IAppBuilder appBuilder)
    {
        // Configure Web API for self-host. 
        HttpConfiguration config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        appBuilder.UseWebApi(config);
    }
}
}

Et voici comment j'ai démarrer le serveur :

using Microsoft.Owin.Hosting;
using System;
using System.Net.Http;

namespace SelfHostedWebApi2 
{ 
public class Program 
{ 
    static void Main() 
    { 
        string baseAddress = "http://localhost:80/"; 

        // Start OWIN host 
        try
        {
            WebApp.Start<Startup>(new StartOptions(url: baseAddress));

            HttpClient client = new HttpClient();

            var response = client.GetAsync(baseAddress + "api/values").Result;

            Console.WriteLine(response);
            Console.WriteLine(response.Content.ReadAsStringAsync().Result); 

        }
        catch (Exception ee)
        {

            Console.WriteLine("Erreur : " + ee.ToString());
        }

        Console.ReadLine(); 
    } 
} 
} 

Merci pour votre aide

Était-ce utile?

La solution

Vous devriez changer votre baseAddress de sorte que son extrémité correspond à votre nom d'hôte ou vous pouvez utiliser un WeakWildcard * pour correspondre à tous les possibles de noms d'hôtes.

Celui-ci devrait fonctionner: string baseAddress = "http://*:80/";

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top