我的印象是我们实际上可以在实时服务器上运行一个控制台应用程序来监听和提供数据(如果是为了这个目的的网页)。这样,我们就不必在 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"
},
如果我进入命令提示符,dir 到项目的根目录,然后运行 dnx web,是的,确实,控制台应用程序正在运行,我可以进入我的浏览器并输入 http://localhost:5010并查看网站。
但是,当我将该 url 更改为实际 url 时(是的,我已经将 DNS 指向该 url 的服务器),我会收到错误
EACCES permission denied
.如果我们可以“自托管”但只能使用本地主机,那似乎只对本地开发有利。为什么有能力“在我自己的进程中自托管”
如果它不能用于现场/制作?
我需要做什么?我需要为特定文件夹设置一些权限吗?哪个用户/组,哪个权限,哪个文件夹?我在项目的根目录上尝试了 IIS_IUSRS,当然,这不起作用,因为无论如何我都想绕过 IIS。
任何帮助将不胜感激。
最佳答案
对于以后发现这个问题的任何人:
当您启动 Kestrel 服务器时,您需要确保该端口上还没有监听,否则将无法启动。如果您尝试在标准 http(端口 80)上托管某些内容,IIS 是一个明显的罪魁祸首。您要么需要停止在该端口上运行的任何其他内容,要么使用它将流量转发到您的 Kestrel 服务器。
有关在 IIS 中直接托管 ASP.NET 5 项目的更多信息,请访问:https://docs.asp.net/en/latest/publishing/iis.html
关于iis - ASP.net 5 自托管在 Live Windows Server 上 - EACCES 权限被拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344731/