我在Visual Studio 2015中创建了空项目asp.net 5.
以下是它的外观:
据我从一些教程中了解到,bin文件夹必须在wwwroot中。
但wwwroot中没有 bin ,传感器观察项目中 bin 文件夹也不存在。
在我的项目中知道为什么bin文件夹不存在于wwwroot中?
答案 0 :(得分:3)
wwwroot
文件夹来自您提供静态文件的位置(例如css,图像,JavaScript等)。永远不应将bin
文件夹中的文件提供给客户端(例如浏览器),因此不应将其放在wwwroot
文件夹中。
Here is some more information关于wwwroot
应包含的内容。基本上:
"在ASP.NET 5中输入wwwroot文件夹.wwwroro文件夹代表 在Web服务器上运行时Web应用程序的实际根目录。静态的 文件,如appsettings.json,它们不在wwwroot中 永远不可访问,并且不需要创建特殊规则 阻止访问敏感文件。而不是将访问权限列入黑名单 敏感文件,采用更安全的白名单方法 只有wwwroot文件夹中的文件可以通过网络访问 请求"
答案 1 :(得分:2)
wwwroot/bin
文件夹仅用于包含一个文件AspNet.Loader.dll
。 IIS使用AspNet.Loader.dll
来加载应用程序(位于wwwroot
文件夹之外)。
原因是安全性增加。使用ASP.NET Core 1.0,您不会将应用程序条目指向该文件夹(包含ASP.NET 4.5中的所有* .cs文件),但您将其指向应用程序的wwwroot
文件夹。
现在,IIS无法访问实际的应用程序文件(并允许意外访问可能的敏感文件)。因此执行您的应用程序需要AspNet.Loader.dll
。
除此之外,wwwroot/bin
中没有其他二进制文件,也不应该有其他二进制文件。
<强>更新强>
这曾经是在IIS中运行/托管Helios所必需的。 Helios has been deprecated与beta8
,因为开发两个不同的服务器没有任何意义。因此,对于较新版本的ASP.NET Core,wwwroot/bin
将始终为空。如果您找到帖子或参考文献,他们很可能会参考旧的测试版。
现在Kestrel,IIS通过HttpPlatformhandler(最多rc1-final
版本和ASP.NET Core Module使用rc2和更新版本)和自我托管HttpListener
是支持的运行模式。虽然也可以在IIS后面使用Kestrel。