Самостоятельный веб-API с OWIN на EC2

Я следовал пошаговым инструкциям из http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api.

Вот код консольного приложения:

namespace OWINTest
{
class Program
  {
    static void Main(string[] args)
    {
        string baseAddress = "http://localhost:1961/";
        // Start OWIN host 
        WebApp.Start<Startup>(url: baseAddress);
        ...
    }
  }
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);
    }
  }
public class ValuesController : ApiController
  {
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
  }
}

Верно следующее:

  1. Сервер OWIN работает (можно подключиться с того же компьютера с помощью Fiddler, браузера)
  2. Порт экземпляра EC2 открыт для входящего трафика через группу безопасности
  3. Никакие другие процессы не прослушивают этот порт
  4. Версия OWIN — Microsoft.AspNet.WebApi.OwinSelfHost 5.2.2.
  5. .NET 4.5 установлен на экземпляре EC2

Проблема, с которой я сталкиваюсь:

HTTP/1.1 502 - Connection Failed error when calling http://(uc2-00-000-000-us-west-1.compute.amazonaws.com):1961/api/values with the following message: The connection to 'ec2-00-000-000-us-west-1.compute.amazonaws.com' failed. Error: TimedOut (0x274c). System.Net.Sockets.SocketException A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 

Я безуспешно пробовал следующее:

 1. 'netsh http add urlacl url=http://localhost:1961 user=everyone'
 2. 'netsh http add urlacl url=http://+:1961 user=everyone'
 3. 'netsh http add urlacl url=http://*:1961 user=everyone'

person Duke Ace    schedule 23.09.2014    source источник


Ответы (1)


Используйте базовый адрес http://+:1961/ и в зависимости от учетной записи Windows, на которой вы используете свой сервер owin, так как вам не понадобится адрес urlacl. то есть:

  • вы используете свой сервер owin как службу Windows, используя учетную запись local system, тогда вам не понадобится urlacl.
  • вы запускаете сервер owin из командной строки, войдя в учетную запись администратора.
person TealFawn    schedule 09.09.2015