azure 端口7071不可用,请关闭使用该端口的进程,或使用--port [-p]指定另一个端口

2ul0zpep  于 2022-11-17  发布在  其他
关注(0)|答案(9)|浏览(231)

我尝试运行Azure功能应用程序(Http Triggerd API)从我的本地(使用VS代码)。但是我得到一个错误“端口7071不可用。关闭使用该端口的进程,或者使用--port [-p]指定另一个端口。”我使用cmd提示符检查了使用的端口列表。但是7071不在使用的列表中。还尝试使用“func host start --port [p1]”以不同的端口运行“,但是它抛出了和上面一样的错误。对于所有的端口它抛出了同样的错误。如何解决这个问题?

lmvvr0a8

lmvvr0a81#

后藤项目属性”-〉“调试”-〉“应用程序参数”-〉“粘贴”-〉“主机启动”--“出错时暂停”--端口5800
您的Azure功能将具有新端口:http://localhost:5800/api/Function1

qc6wkl3g

qc6wkl3g2#

有时可能会发生端口正在使用,尽管在调试模式下没有其他azure功能。
在Windows10上要解决此问题,请打开Windows任务管理器ctrl + shift + esc找到您Azure函数进程,然后简单地将其终止它应该会有所帮助,而无需重新启动您PC
这是它在我的PC上的样子:

gupuwyp2

gupuwyp23#

如果 使用 vs 代码 , 请 将 local.settings.json 更新 为
ex 设置

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  },
  "ConnectionStrings": {
    "ConnectionString1": "............."

  },
  **"Host": {
    "LocalHttpPort": 5004
  }**
}

中 的 每 一 个
然后 转到 http://localhost:5004/api/函数 名称

9fkzdhlc

9fkzdhlc4#

如果在开发中运行,请确保没有另一个Azure函数处于调试模式。我一直收到这个错误,直到我停止了另一个函数。

o2g1uqev

o2g1uqev5#

我在linux环境中尝试从eclipse内部本地运行azure函数时遇到了这种情况。结果发现从eclipse控制台内部终止进程并不会杀死进程,因此在机器重新启动之前,所使用的端口(7071)不会被释放。这里需要进行检测工作来确定是否是这种情况(仅限linux):
1.运行以下命令以确定端口是否确实被占用
sudo lsof -i -P -n | grep LISTEN
在我的例子中,输出如下所示:

func      11421 s-----v  261u  IPv4 105109      0t0  TCP 127.0.0.1:44367 (LISTEN)
func      11421 s-----v  293u  IPv4 103143      0t0  TCP *:7071 (LISTEN)

1.如果你看到这个消息,就意味着占用7071的进程需要被终止。为此,首先找到占用端口的进程的进程id,如下所示:
脉冲电场|grep函数|grep -v grep
这将为您提供要终止的进程ID,输出可能如下所示:

s-----v  14517     1  6 12:36 ?        00:00:05 func host start
s-----v  14832 14517 11 12:38 ?        00:00:00 /usr/lib/jvm/jdk-17/bin/java -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -noverify -Djava.net.preferIPv4Stack=true -jar /usr/lib/azure-functions-core-tools-4/workers/java/azure-functions-java-worker.jar --host 127.0.0.1 --port 34867 --workerId 1298e58c-8104-4c98-b440-f617b8f6943d --requestId c01f56cd-a29c-4ba6-b147-f2a15ea7c4d6 --grpcMaxMessageLength 2147483647

1.接下来,对两个进程ID发出kill命令,如下所示:
杀死-9 14517 14832
应该可以了!

km0tfn4u

km0tfn4u6#

这是由于防病毒软件。禁用防病毒软件后,它工作正常。

hgtggwj0

hgtggwj07#

在Windows上,在Windows防火墙规则中添加端口为我解决了这个问题。

3ks5zfa0

3ks5zfa08#

不知道为什么这为我解决了它,但我不得不重新启动我的机器,然后一切都很好。

q3aa0525

q3aa05259#

要添加到
有时它并没有完全关闭,当你尝试重新启动它时,旧的进程仍然在运行,这就是为什么你不能在那个端口上运行,当然,你可以很容易地使用其他回复中提供的方法来更改端口,这并不高效,因为你需要使用func项目更新所有文件。
@zolty13提供了一个针对windows的解决方案,但是,如果你在MacOS上运行,要解决这个问题,打开spotlight CMD+SPACE -〉搜索并运行Activity Monitor -〉找到你的Azure函数进程并简单地杀死它,它应该会有帮助,而不需要重新启动你的PC或改变端口。
它在我的Mac(Ventura)上的外观如下:

相关问题