代码之家  ›  专栏  ›  技术社区  ›  Grokys

替代httpListener?

  •  14
  • Grokys  · 技术社区  · 16 年前

    我正在开发一个应用程序,到目前为止,它使用httplistener提供一个小型的独立HTTP服务器。然而,我最近发现httpListener需要以管理员身份运行,这并不总是可能的。

    最好的选择是什么?我需要HTTP GET和POST,这两种方法都不是简单地在文件系统上读/写文件,它们需要运行定制的.NET代码。

    到目前为止,我的研究已经提出卡西尼,但据我所知,我必须写一个自定义版本。还有别的吗?尤其是与httpListener接口相同但不需要管理员特权的东西,会令人惊讶!

    7 回复  |  直到 6 年前
        1
  •  8
  •   user93202    15 年前

    我找到的另一个选择是 C# Webserver 关于CODULTEX。

    “……”一个灵活的HTTP服务器,可以嵌入到任何.NET应用程序中。它具有模块化设计,使用模块添加功能。服务器还支持REST和所有HTTP谓词…”

    它有一个httplistener类,我认为它类似于system.net.httplistener,但是我还没有使用其中的任何一个,所以我不能确定。

        2
  •  3
  •   Community pid    7 年前

    其中一个解决方案包括 this other question -您可以授予自己以非管理员身份运行httplistener的权限。

    你可以让应用程序从一个命令文件启动,该文件对权限进行排序,然后运行真正的应用程序。

        3
  •  3
  •   ctrlplusb    12 年前

    正如威尔·迪恩在你的帖子中所说,你可以运行以下netsh命令:

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

    用您的值替换“http:/+:8346/”,这将允许任何经过身份验证的用户在目标端点运行Web服务器。

        4
  •  3
  •   chwarr Tamas Hegedus    9 年前

    关于声明:

    我最近发现httpListener需要以管理员身份运行

    这并不完全正确,其他一些答案涉及其中一个原因,但还有另一个原因:

    1. 其他海报指出:您可以向非管理员授予权限。很好,但不太好。
    2. 您可以在本地主机上监听,甚至在端口80上,而不必是管理员。注意:我记得只有“localhost”有效,而不是“127.0.0.1”…所以一定要将localhost传递给前缀。添加call。

    我们提供了一个内部工具,允许开发人员在他们的PC上运行一个基于HTTP的应用程序主机,我们起初认为使用httplistener是不可能的,因为管理(或管理员授权的权限)问题,但后来我们发现本地主机工作正常,没有管理员。这有点道理:从外部聆听是“危险的”,但在本地机器上聆听并没有那么危险。

        5
  •  0
  •   Chris Kimpton    16 年前

    好吧,那么你有一个普通的桌面应用程序需要允许入站HTTP连接——嗯——难道Windows防火墙不是问题吗?

    假设不是,这听起来就像是一个Web服务——你能走那个路线吗——通过它公开URL?尽管我的.NET知识还不够深入,无法知道您是否仍需要运行特定的HTTP服务器来回答请求。 Spring.Net 可能值得一看。

        6
  •  0
  •   AlfeG    9 年前

    Nowin 是一个可以集成到 Owin 作为 ServerFactory 不依赖于 HttpListener . 我们可以代替 Microsoft.Owin.Host.HttpListener 自由无障碍

        7
  •  0
  •   CodeFox    6 年前

    对于.NET核心应用程序,存在一个新的(跨平台)HTTP服务器实现: Kestrel .