2013-05-20 35 views
20

tôi đã tạo ra một tổ chức tự Nancy/SignalR ứng dụng tự lưu trữ trong OWIN sử dụng Microsoft.Owin.Host.HttpListenerMicrosoft.Owin.HostingTự tổ chức OWIN và urlacl

điều cần làm việc hoàn toàn tốt đẹp tại địa phương nhưng ngay sau khi tôi cố gắng sử dụng bất cứ điều gì nhưng localhost để truy cập ứng dụng tôi nhận được lỗi HTTP Error 503. The service is unavailable. Tôi thậm chí không thể truy cập ứng dụng bằng cách sử dụng 127.0.0.1 hoặc tên máy.

Tôi đã thử thêm các cổng để urlacl sử dụng

http add urlacl http://*:8989/ user=EVERYONE nhưng dường như không làm gì cả.

đây là những tùy chọn khởi động OWIN mà tôi đã cố gắng,

 var options = new StartOptions 
     { 
      Url = "127.0.0.1", 
      App = GetType().AssemblyQualifiedName, 
      Port = _configFileProvider.Port 
     }; 

    var options = new StartOptions 
     { 
      App = GetType().AssemblyQualifiedName, 
      Port = _configFileProvider.Port 
     }; 

đây là mã nguồn cho các tập tin bắt đầu và dừng máy chủ https://github.com/NzbDrone/NzbDrone/blob/vnext/NzbDrone/Owin/OwinHostController.cs

+0

Bạn đã sử dụng url nào trong mã của mình? – davidfowl

+0

@dfowler đã cập nhật câu hỏi bằng mã thực tế. –

+0

Thử thay đổi Url thành "*" thay vì chỉ ràng buộc thành 127.0.0.1. – davidfowl

Trả lời

25

nên nó quay ra bạn cần chuyển url vào StartOptions với cùng định dạng với urlacl.

Thay đổi tùy chọn bắt đầu thành mã bên dưới đã khắc phục được sự cố. bây giờ ứng dụng có thể truy cập được qua mạng.

var options = new StartOptions("http://*:8989") 
    { 
     ServerFactory = "Microsoft.Owin.Host.HttpListener" 
    }; 
+1

Làm thế nào để điều này cần phải được điều chỉnh cho SignalR 2 beta? Url và ứng dụng không thuộc tính của StartOptions vì nó hiển thị cho tôi. –

+0

@ uosɐſupdated mẫu mã để phù hợp với cú pháp cho phiên bản hiện tại của owin (1.1.0 beta 2) –

+0

Wow. Rất rất hữu ích :) Vì vậy, nhiều câu trả lời tương tự khác ra khỏi đó (chủ yếu là nói về IIS Express) nhưng điều này thực sự hoạt động. – Jedidja

9

Tôi dành nhiều giờ giải quyết vấn đề tương tự trên Windows 8.1.

StartOptions options = new StartOptions(); 

    options.Urls.Add("http://localhost:9000"); 
    options.Urls.Add("http://127.0.0.1:9000"); 
    options.Urls.Add("http://192.168.0.102:9000"); 
    options.Urls.Add(string.Format("http://{0}:9000", Environment.MachineName)); 

    WebApp.Start<Startup>(options); 

tôi không thể nghe hoặc đã nhận được 503 lỗi ...

Nếu bạn muốn nghe trên một số địa chỉ IP, mỗi địa chỉ cần kỷ lục urlacl riêng của mình:

không hoạt động:

netsh http>add urlacl http://+:9000/ user=EveryOne  

OK:

netsh http>add urlacl http://localhost:9000/ user=EveryOne 
    netsh http>add urlacl http://127.0.0.1:9000/ user=EveryOne 
    etc. 

Sau khi thêm đặt chỗ cho từng địa chỉ riêng lẻ, mọi thứ đều hoạt động tốt.

+1

Thêm một số địa chỉ IP hoặc URL cũng hoạt động với StartOption mới ("http: // *: 9000 /") trên Microsoft.Owin.Hosting 3.0.1. và netsh http> thêm urlacl http: // *: 9000/hoặc chạy ứng dụng của bạn với tư cách quản trị viên. – flip

7

Nhờ thông tin mà @ kay.one cung cấp, tôi có thể truy cập vào API Web tự lưu trữ 2.2 của mình (OWIN/Katana, ứng dụng bảng điều khiển) từ cùng một máy qua địa chỉ IP. Tuy nhiên chỉ củng cố nó thành một bước-by-step đơn giản:

  1. Trong Main của Program.cs (đối với giao diện điều khiển ứng dụng): WebApp.Start<Startup>("http://*:8080");
  2. Từ Windows Command Prompt (Run as administrator) nhập netsh http add urlacl http://*:8080/ user=EVERYONE
  3. Go để Windows Firewall with Advanced Security và thêm một Rule Inbound mở ra cổng TCP 8080

sau đó bạn sẽ có thể truy cập từ máy khác sử dụng địa chỉ IP hoặc máy tính Tên.

Tuyên bố từ chối trách nhiệm: Tôi không phải là chuyên gia bảo mật nên tôi không biết ý nghĩa bảo mật của việc này.