此平台不支持HTTPListener操作

时间:2016-12-14 19:08:11

标签: .net vb.net exception httplistener

我刚刚在我的应用程序中添加了一个简单的HTTPListener测试。它在Windows 10 x64上运行良好,但拒绝在Server 2008 R2 Standard x64上运行。我以管理员身份运行它(否则我得到“访问被拒绝”)。我检查没有别的东西试图绑定到同一个端口(我会得到一个不同的错误):

Imports System.Net

Public Class Test
  Public ReadOnly Property Address As String
    Get
      Return _Address
    End Get
  End Property

  Public ReadOnly Property Port As Integer
    Get
      Return _Port
    End Get
  End Property

  Private _Address As String
  Private _Port As Integer

  Private listener As HttpListener
  Private listenerThread As Threading.Thread

  Public Sub New(ByVal addr As String, ByVal p As Integer)
    _Address = addr
    _Port = p
  End Sub

  Public Sub Start()
    listener = New HttpListener()
    listener.Prefixes.Add("http://" & Address & ":" & Port & "/")
    listenerThread = New Threading.Thread(AddressOf ListenerThreadSub)
    listenerThread.Start()
  End Sub

  Public Sub ListenerThreadSub()
    listener.Start()
    While listener.IsListening
      Dim response As HttpListenerResponse = Nothing
      Try
        Dim context As HttpListenerContext = listener.GetContext()
        Dim path As String = context.Request.Url.LocalPath
        response = context.Response
        MsgBox(path)
      Catch ex As Exception

      End Try
    End While
    listenerThread.Abort()
  End Sub

  Public Sub Finish()
    listener.Stop()
  End Sub

End Class

这是我的测试按钮:

Private Sub TestToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TestToolStripMenuItem.Click
  Dim TestService As Test = New Test("FQDNOFSERVER", PORT)
  TestService.Start()
End Sub

目标框架是.NET 4.6.1,但自.NET 4以来似乎支持此类。IsSupported属性设置为False

3 个答案:

答案 0 :(得分:1)

有时候还有其他服务使用该端口,有时服务被禁用。

以高程运行:

net stop http / y

sc config http start = demand

可能需要重新启动。

答案 1 :(得分:0)

我通过将“设备管理器”中的“HTTP”驱动程序设置为“需求”来修复它。通过转到查看>可以找到“HTTP”(以及其他非PnP)。显示隐藏设备

我跑过this article,这让我想知道HTTP驱动程序是否已启用。

答案 2 :(得分:0)

在我的情况下,这是http服务问题,但是更深层次。

使用@Artur ABC方法时,我发现无法再次启动http服务。是The configuration registry database is corrupt.

我不得不去注册表和Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslBindingInfo\,然后发现绑定服务的ine是在我的旧本地IP 192.168.1.54上设置的,当我重新启动网络时,我有了一个新的IP地址,并且我不得不从注册表中删除旧服务。