我正在接手一位最近离职的同事的一个项目。我将独自开发一个通过 xsp4 服务器上的 mono 在 ASP.NET 上运行的网站。我对 Linux 和 ASP.NET 框架还不熟悉,所以我会尽力解释清楚。为了让一切顺利进行,我通过 ssh 进入服务器并切换到项目的目录。从这里我使用 git 来提取任何新的更改。接下来我使用:
screen (or screen -r if one is already running)
并通过以下方式运行/重新启动服务器:
sudo xsp4 --port 80
昨晚我离开时一切正常,但今天早上我访问该网站时,浏览器出现错误 403 访问被禁止。我没有更改权限或编辑文件。
我决定通过 ssh 登录并使用 screen -r 来停止服务器,但它说没有要恢复的屏幕。在新屏幕中,我尝试运行服务器,但出现此错误:
w@c:~/CRIME/CP-Web-l> sudo xsp4 --port 80
xsp4
Listening on address: 0.0.0.0
Root directory: /home/webmaster/CRIME/CP-Web-l
Error: System.Net.Sockets.SocketException: Address already in use
at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) [0x00000] in <filename unknown>:0
at Mono.WebServer.XSPWebSource.CreateSocket () [0x00000] in <filename unknown>:0
at Mono.WebServer.ApplicationServer.Start (Boolean bgThread) [0x00000] in <filename unknown>:0
at Mono.WebServer.ApplicationServer.Start (Boolean bgThread, System.Exception initialException) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) Mono.WebServer.ApplicationServer:Start (bool,System.Exception)
at Mono.WebServer.XSP.Server.RealMain (System.String[] args, Boolean root, IApplicationHost ext_apphost, Boolean quiet) [0x00000] in <filename unknown>:0
我不太明白如果没有屏幕运行,它怎么会派上用场。我也不知道屏幕怎么会在一夜之间消失。有没有可能是发生了崩溃?
通过谷歌搜索,我发现这个帖子也有类似的问题,http://www.ubuntufaqs.com/questions/432605/xsp4-address-already-in-use-error-cant-run-mono-application,给出了 3 个解决方案。我认为 xsp 不再运行,但我不确定如何检查。我认为由于未找到屏幕,所以 xsp 不再运行。该目录不是另一台服务器的根目录。如果 xsp 在 mono 路径中找不到所需的程序集,会抛出错误吗?
我将项目恢复到以前的版本,但同样的错误仍然存在。
这两个问题有关联吗?如果我没有提供一些有用的信息,请告诉我。谢谢!
编辑(5 月 12 日,下午 1:48):
据我所知,这些是监听端口 80 的东西,但我不确定它们是什么:
w@c:~/CRIME/CP-Web-l> sudo lsof -i:80 -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd2-pr 1324 root 4u IPv4 10644 0t0 TCP *:80 (LISTEN)
httpd2-pr 1795 wwwrun 4u IPv4 10644 0t0 TCP *:80 (LISTEN)
httpd2-pr 1796 wwwrun 4u IPv4 10644 0t0 TCP *:80 (LISTEN)
httpd2-pr 1798 wwwrun 4u IPv4 10644 0t0 TCP *:80 (LISTEN)
httpd2-pr 1799 wwwrun 4u IPv4 10644 0t0 TCP *:80 (LISTEN)
httpd2-pr 1800 wwwrun 4u IPv4 10644 0t0 TCP *:80 (LISTEN)
httpd2-pr 3314 wwwrun 4u IPv4 10644 0t0 TCP *:80 (LISTEN)
答案1
因此,在几天无果之后,我决定让服务器管理员重新启动虚拟服务器。我又等了一天才再次尝试,幸运的是,现在一切似乎都正常了。如果您遇到与我类似的问题,祝您好运。