我的印象是,我们实际上可以在实时服务器上运行一个控制台应用程序,该应用程序可以监听和提供数据(如果是为了这个目的,则是网页).这样,我们就不必在IIS上托管我们的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
.
如果我们可以"自我托管"但只能使用localhost,这似乎只对本地开发有利.如果它不能用于实时/制作,为什么能够"在我自己的过程中自我托管"?
我需要做什么?我是否需要为特定文件夹设置一些权限?哪个用户/组,哪个权限,以及哪个文件夹?我在项目的根目录上尝试了IIS_IUSRS,当然,这不起作用,因为我还想绕过IIS.
任何帮助将不胜感激.
对于后来发现此问题的人:
当您启动Kestrel服务器时,您需要确保没有在该端口上侦听的内容,否则它将无法启动.如果你想在标准的http(端口80)上托管一些东西,IIS就是一个明显的罪魁祸首.您需要停止在该端口上运行的任何其他内容,或使用它将流量转发到您的Kestrel服务器上.
有关直接在IIS中托管ASP.NET 5项目的更多信息,请访问:https://docs.asp.net/en/latest/publishing/iis.html