문제

나는 지금까지 httplistener를 사용하여 작은 독립형 HTTP 서버를 제공하는 응용 프로그램을 개발하고 있습니다. 그러나 최근에 httplistener는 관리자로 실행해야한다는 것을 발견했습니다. 이는 항상 가능하지는 않습니다.

최선의 대안은 무엇입니까? http get and post가 필요합니다. 둘 다 파일 시스템에서 파일을 읽거나 쓰는 것이 아니라 사용자 정의 .NET 코드를 실행해야합니다.

지금까지의 연구는 카시니를 일으켰지 만, 내가 알 수있는 한, 나는 사용자 정의 버전을 작성해야 할 것입니다. 다른 것이 있습니까? 부분적으로는 httplistener와 동일한 인터페이스를 가진 무언가이지만 관리자 권한이 필요하지는 않습니다.

도움이 되었습니까?

해결책

내가 찾은 대안 중 하나는입니다 C# 웹 서버 CodePlex에서.

"... 모든 .NET 애플리케이션에 내장 할 수있는 유연한 HTTP 서버. 모듈을 사용하여 기능이 추가되는 모듈 식 디자인이 있습니다. 서버는 REST 및 모든 HTTP 동사도 지원합니다 ..."

그것은 system.net.httplistener와 유사하다고 생각하는 httplistener 클래스를 가지고 있지만 아직 그 중 하나를 사용하지 않았으므로 확실하지 않습니다.

다른 팁

이에 대한 한 가지 해결책은 다음과 같습니다 이 다른 질문 - 당신은 httplistener를 비 독점으로 실행할 권한을 부여 할 수 있습니다.

권한을 정렬 한 다음 실제 앱을 실행하는 명령 파일에서 앱을 시작할 수 있습니다.

게시물에서 Will Dean의 의견과 마찬가지로 다음 Netsh 명령을 실행할 수 있습니다.

netsh http add urlacl url=http://+:8346/ user="NTAuthority\Authenticated Users" sddl="D:(A;;GX;;;AU)"

'http : //+: 8346/'을 값으로 대체하면 인증 된 사용자가 대상 엔드 포인트에서 웹 서버를 실행할 수 있습니다.

진술에 관해 :

최근에 httplistener가 관리자로 실행해야한다는 것을 발견했습니다.

그것은 전적으로 사실이 아니며 다른 답변 중 일부는 이유 중 하나에 대해 접촉하지만 다른 이유가 있습니다.

  1. 다른 포스터에 의해 언급 : 비 관리자에게 권한을 부여 할 수 있습니다. 괜찮지 만 좋지 않습니다.
  2. 관리자가 아닌 포트 80에서도 LocalHost에서들을 수 있습니다. 참고 : "127.0.0.1"이 아니라 "LocalHost"만 작동한다는 것을 기억하십시오. 따라서 LocalHost를 접두사에 전달하십시오.

우리는 개발자가 PC에서 HTTP 기반 앱 호스트를 실행할 수있는 내부 도구를 운송하며, 처음에는 httplistener를 사용하여 관리자 (또는 관리자 부여한 권한) 문제로 인해 불가능하다고 생각했지만 우리는 LocalHost는 관리자가되지 않고 잘 작동합니다. 외부에서 듣는 것은 "위험한"것이지만 로컬 기계에서 듣는 것은 그다지 위험하지 않습니다.

자, 인바운드 HTTP 연결을 허용 해야하는 일반 데스크탑 앱이 있습니다. 흠 - Windows 방화벽은 문제가되지 않습니까?

그렇지 않다고 가정하면 거의 웹 서비스처럼 들립니다. 그 경로로 갈 수 있습니까? 내 .NET 지식은 요청에 답변하기 위해 특정 HTTP 서버를 실행 해야하는지 알기에 충분히 깊지 않습니다. Spring.net 아마 볼만한 가치가있을 것입니다.

지금에 통합 될 수있는 훌륭한 lib입니다 Owin ~처럼 ServerFactory 의존하지 않고 HttpListener. 교체 할 수있었습니다 Microsoft.Owin.Host.HttpListener 장애가없는 lib

.NET 코어 애플리케이션의 경우 새로운 (크로스 플랫폼) HTTP 서버 구현이 있습니다. 황조롱이.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top