HTTP 503 Service is unavailable when trying to bro

2019-01-26 03:59发布

I have a windows hosted SignalR hub created in VS2012:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR();
    }
}

public static class SignalR
{
    public static void Start()
    {
        const string url = "http://*:8080";
        WebApp.Start<Startup>(url);
    }
}

 public class Broadcaster : Hub
    {

        public void SendDownloadResult(bool result, string device, string description, string connectionId, string task)
        {
            var context = GlobalHost.ConnectionManager.GetHubContext<Broadcaster>();
            context.Clients.Client(connectionId).sendDownloadResult(result, device, description, task);
        }
    }

I have deployed this windows service on 3 different PCs, it works fine on two PCs, but on the other, I get HTTP 503 Service is unavailable when I try to browse http://localhost:8080/signalr/hubs

No exception thrown when the code is executed on all 3 PCs.

I have checked IIS's features in add/remove windows features, they're all the same.

What am I missing?

3条回答
劫难
2楼-- · 2019-01-26 04:35

I also realised, that in one of the PCs, port 8080 was in use.

Changing the port from

const string url = "http://*:8080";

to

const string url = "http://*:8088";

solved the issue

查看更多
够拽才男人
3楼-- · 2019-01-26 04:48

I also had same issue. I rectified it by changing

 const string url = "http://*:8080";

TO

 const string url = "http://+:8080"; // * replaced by +
查看更多
乱世女痞
4楼-- · 2019-01-26 04:53

I was able to reproduce this locally with the following setup:

  1. Use NetSh.exe or similar tool to reserve http://localhost:8080/
  2. Call WebApp.Start<Startup>("http://*:8080")
  3. Browse to http://localhost:8080/

What happens is that Http.Sys accepts the incoming request, examines the host header, decides that there is a reservation for localhost:8080, but realizes that no application is listening to localhost:8080, only *:8080. Http.Sys then returns the 503.

Solutions:

  1. Try WebApp.Start<Startup>("http://+:8080")
  2. Remove the Http.Sys/NetSh registration
查看更多
登录 后发表回答