我刚刚在我的应用程序中添加了一个简单的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
。
答案 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地址,并且我不得不从注册表中删除旧服务。