为什么我的项目中的wwwroot里面没有bin文件夹?

时间:2016-03-31 08:43:53

标签: asp.net-core asp.net-core-mvc

我在Visual Studio 2015中创建了空项目asp.net 5.

以下是它的外观:

enter image description here

据我从一些教程中了解到,bin文件夹必须在wwwroot中。

但wwwroot中没有 bin 传感器观察项目中 bin 文件夹也不存在。

在我的项目中知道为什么bin文件夹不存在于wwwroot中?

2 个答案:

答案 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 deprecatedbeta8,因为开发两个不同的服务器没有任何意义。因此,对于较新版本的ASP.NET Core,wwwroot/bin将始终为空。如果您找到帖子或参考文献,他们很可能会参考旧的测试版。

现在Kestrel,IIS通过HttpPlatformhandler(最多rc1-final版本和ASP.NET Core Module使用rc2和更新版本)和自我托管HttpListener是支持的运行模式。虽然也可以在IIS后面使用Kestrel。