2010-04-02 36 views
7

Tôi đang cố gắng sử dụng C# và HttpListener với một tiền tố của bất cứ điều gì khác hơn là localhost và nó không thành công (tức là nếu tôi cho nó , tức làNET HttpListener Prefix vấn đề với bất cứ điều gì khác hơn là localhost

http://localhost:1234 công trình, nhưng

http://server1:1234 không

mã là ...

HttpListener listener = new HttpListener(); 
String prefix = @"http://server1:1234"; 
listener.Prefixes.Add(prefix); 
listener.Start(); 

Các failu tái xuất hiện trên listener.Start() ngoại trừ Access is denied..

Trả lời

3

Ứng dụng của bạn có đang chạy với đặc quyền nâng cao không?

Tài khoản thông thường không thể móc đường dẫn Http mà không cần đặt trước.

http://msdn.microsoft.com/en-us/library/Aa364673

Nó có thể được thực hiện programatically lúc cài đặt thời gian. Hãy cho tôi biết nếu điều này là quan tâm, và tôi sẽ đào một số mã.

CHỈNH SỬA:

Thực ra, vì tôi không thể xác định mã đến từ đâu, tôi không thể đăng mã ở đây. Có một codeplex project for doing this kind of thing mà chắc chắn là giá trị chọn ngoài.

/EDIT

Dưới đây là một cách làm cho các đặt phòng trên dòng lệnh:

http://www.casadehambone.com/HowToAddAURLACLAndAvoidAddressAccessDeniedExceptionInWindowsVista.aspx

+1

Sub-câu hỏi: người ta có thể tin cậy vào không cần phải đặt phòng cho 'http: // localhost: { port}/'? Trên Win7, tôi có thể nghe trên cổng mà không cần đặt trước, nhưng sau đó tôi đã cài đặt một tấn công cụ đã và chưa thử nghiệm trên kho Windows 7. Ngoài ra, tự hỏi chính sách là gì trên Windows Vista và Windows XP SP2. Tôi sẽ rất vui nếu localhost là một trường hợp đặc biệt mà tôi không phải lo lắng. –

8

tôi đã cùng một vấn đề một lần và tôi giải quyết nó bằng cách thêm một phòng URL cho namespace URL được chỉ định cho người dùng/người dùng vào Network Shell (netsh). Dưới đây là một ví dụ về cách RESERV một URL cho mỗi người dùng, chạy này trong cửa sổ lệnh như một quản trị viên:

netsh http add urlacl url=http://server1:1234/ user=Everyone 

Dưới đây là một ví dụ về cách RESERV một URL cho một người sử dụng, chạy trong cửa sổ lệnh như một quản trị:

netsh http add urlacl url=http://server1:1234/ user=Steve 

Bằng cách này bạn không cần phải chạy các ứng dụng như một quản trị viên

+0

Điều này thực sự làm gì? 'netsh http add url url url = http: // server1: 1234 /' Có giống như sử dụng tệp host không? –

+0

@RoyiNamir Không, Network shell ('netsh') là một tiện ích dòng lệnh cho phép bạn định cấu hình và hiển thị trạng thái của các vai trò và thành phần máy chủ truyền thông mạng khác nhau. 'http thêm url url url = http: // server1: 1234 /' lưu trữ URL được chỉ định cho người dùng và tài khoản không phải quản trị viên. Trong trường hợp này 'user = Everyone' cho mọi tài khoản. – ClydeFrog

Các vấn đề liên quan