我刚刚在我的应用程序中添加了一个简单的 HTTPListener
测试 . 它在Windows 10 x64上运行良好,但拒绝在Server 2008 R2 Standard x64上运行 . 我以管理员身份运行它(否则我得到"access denied") . 我检查没有别的东西试图绑定到同一个端口(我会得到一个不同的错误):
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
.
2 回答
有时候有其他服务使用该端口,有时服务被禁用 .
以高程运行:
net stop http /y
sc config http start= demand
可能需要重新启动 .
我通过将设备管理器中的"HTTP"驱动程序设置为"Demand"来修复它 . 可以通过 View > Show Hidden Devices 找到"HTTP"(以及其他非PnP) .
我跑过this article,这让我想知道HTTP驱动程序是否已启用 .