ASP.net 5 在 Live Windows Server 上自托管 - EACCES 权限被拒绝?

Posted

技术标签:

【中文标题】ASP.net 5 在 Live Windows Server 上自托管 - EACCES 权限被拒绝?【英文标题】:ASP.net 5 Self-Hosted on Live Windows Server - EACCES permission denied? 【发布时间】:2016-03-24 12:28:56 【问题描述】:

我的印象是,我们实际上可以在实时服务器上运行一个控制台应用程序,该应用程序将监听和提供数据(如果是用于此目的的网页)。这样,我们就不必在 IIS 上托管我们的 Web 应用程序。我一直认为这就是“在自己的进程中托管 Web 应用”的意思。

这是我认为相关的 project.json 的一部分:

  "dependencies": 
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final"
  ,

  "commands": 
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5010"
  ,

如果我进入命令提示符,进入项目的根目录,然后运行 ​​dnx web,是的,确实,控制台应用程序正在运行,我可以进入浏览器并输入 http://localhost:5010 并查看网站.

但是当我将该 url 更改为实际 url 时(是的,我已经有 DNS 指向该 url 的服务器),我会收到错误 EACCES permission denied

如果我们可以“自托管”但只能使用 localhost,那似乎只对本地开发有利。为什么有能力“在我自己的进程中自我托管” 如果它不能用于现场/制作?

我需要做什么?我需要为特定文件夹设置一些权限吗?哪个用户/组、哪些权限以及哪个文件夹?我在项目的根目录上尝试了 IIS_IUSRS,当然,这不起作用,因为我还是想绕过 IIS。

任何帮助将不胜感激。

【问题讨论】:

你明白了吗?是否有其他应用程序已经在使用此端口?就像 IIS 中的应用程序一样,您的应用程序的另一个实例正在运行?你能从控制台粘贴整个输出日志吗? 我认为你可能是对的。在 IIS 中注册了同一个网站,我正试图让 Kestrel 监听。我会调查一下,当我找到任何东西时,我会回复你。 我刚刚遇到了类似的错误,更改端口解决了它。 IIS 在 80 端口有一些应用程序。谢谢,@JijieChen 【参考方案1】:

对于以后发现此问题的任何人:

当您启动 Kestrel 服务器时,您需要确保该端口上没有任何东西正在侦听,否则它将无法启动。如果您尝试在标准 http(端口 80)上托管某些内容,那么 IIS 显然是罪魁祸首。您要么需要停止在该端口上运行的其他任何东西,要么使用它将流量转发到您的 Kestrel 服务器。

有关直接在 IIS 中托管 ASP.NET 5 项目的更多信息,请访问此处:https://docs.asp.net/en/latest/publishing/iis.html

【讨论】:

以上是关于ASP.net 5 在 Live Windows Server 上自托管 - EACCES 权限被拒绝?的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET 中使用 Live Connect API 检索用户的电子邮件地址

在 NET 5 asp.net 核心 Web 应用程序中为 Kestrel 启用 Windows 身份验证

在 Windows 7 上带有 websockets 的 asp.net 5 Web 应用程序

IIS 7.5、ASP.NET、模拟和访问 C:\Windows\Temp

在 windows 服务器上安装 asp.net mvc 应用程序

在 C#、asp.net、windows 身份中模拟