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