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