在启动江科HIS读卡服务时遇到以下错误:
System.Reflection.TargetInvocationException: 调用的目标发生了异常
HttpListenerException: 在创建 'http://localhost:8321/' 上的新失败,因为与计算机上的微信注册冲突
端口8321被其他程序占用,常见的占用程序包括:
原因: 保持8321端口不变,确保与其他项目的兼容性。
使用提供的批处理文件:
双击运行:以管理员身份启动江科HIS.bat
ThCardReader.exe
确保微信开发者工具也已关闭
检查其他程序:
netstat -aon | findstr ":8321"
找到占用进程ID后,在任务管理器中结束该进程
使用端口检查工具:
双击运行:check_port.bat
cmd
netstat -aon | findstr ":8321"
结束占用进程(谨慎操作):
taskkill /PID [进程ID] /F
如果上述方案都无效,重启计算机可以释放所有被占用的端口。
启动程序后应该看到: ```
江科HIS读卡服务已成功启动。 服务地址: http://localhost:8321
**测试接口:**
http://localhost:8321/api/entry?param=jiangsu_qrcode_01101 http://localhost:8321/readcard/jiangsu/status
## 📋 常见问题
### Q1: 为什么微信会占用8321端口?
**A:** 微信的某些功能(如小程序开发工具)可能会使用8321端口进行本地调试。
### Q2: 如何确认端口是否可用?
**A:** 运行 `check_port.bat` 或在命令行执行:
```cmd
netstat -aon | findstr ":8321"
如果没有输出,说明端口可用。
A: 按顺序检查:
A: 因为其他项目(如医院信息系统)也在使用8321端口的接口,改变端口会影响现有系统的正常运行。
A:
RestService.cs 修改:
try
{
srvcobj = WebApp.Start<Startup>("http://localhost:8321");
MessageBox.Show("江科HIS读卡服务已成功启动。\n服务地址: http://localhost:8321");
}
catch (Exception ex)
{
// 检查是否是端口占用问题
if (ex.Message.Contains("8321") || ex.Message.Contains("微信") || ex.Message.Contains("冲突"))
{
var result = MessageBox.Show(
"端口8321被占用(可能是微信等程序)!\n\n" +
"解决方案:\n" +
"1. 关闭微信等占用端口的程序\n" +
"2. 以管理员身份运行本程序\n" +
"3. 重启计算机释放端口\n\n" +
"是否打开端口检查工具?",
"端口占用冲突",
MessageBoxButtons.YesNo,
MessageBoxIcon.Warning);
if (result == DialogResult.Yes)
{
System.Diagnostics.Process.Start("check_port.bat");
}
}
throw;
}
如果上述方案都无法解决问题,请联系技术支持并提供:
check_port.bat
输出)更新时间: 2024年最新版本
适用版本: 江科HIS v1.0+
技术栈: C# .NET Framework, OWIN, WebAPI
端口: 8321 (固定,确保兼容性)