2016-03-31 41 views
1

Я создал пустой проект ASP.NET 5 в Visual Studio 2015.Почему bin-папка не существует внутри wwwroot в моем проекте?

Вот как это выглядит:

enter image description here

Как я понял из некоторых учебников папку бин должен быть внутри Wwwroot.

Но нет бин внутри Wwwroot, а также бен папки не существует нигде в Sensor Смотровой проекта.

Любая идея, почему bin bin не существует внутри wwwroot в моем проекте?

+0

Я подозреваю, что эти руководства относятся к корневой папкеASP.NET 4 и более ранней версии, а не к ASP.NET 5. Перед ASP.NET не существует папки 'wwwroot'. 5 –

ответ

3

Папка wwwroot находится там, где вы обслуживаете статические файлы (например, css, изображения, JavaScript и т. Д.). Файлы в папке bin никогда не должны обслуживаться клиентом (например, браузером), поэтому он не должен находиться в папке wwwroot.

Here is some more information о том, что должно содержать wwwroot. По существу:

«Введите папку Wwwroot в ASP.NET 5. Папка Wwwroot представляет фактический корень веб-приложения при запуске на веб-сервере Статические файлы, такие как appsettings.json, которые не являются. расположенный в wwwroot, будет недоступен, и нет необходимости создавать специальные правила для доступа к конфиденциальным файлам. Запрет доступа к конфиденциальным файлам с доступом в черный список к чувствительным файлам сделан более безопасный белый список, в котором только те файлы в wwwroot папка доступны через веб-страницы запросов. "

+0

Но где мой bin должен быть? Например, если мне нужно для перемещения файлов с разработки на производство Мне нужно переместить файлы из bin.But я не могу найти bin в моем проекте. – Michael

+0

@Michael: Вы должны использовать 'dnx publish', затем развернуть его результат в IIS и создать новое приложение в IIS, которое указывает на папку' wwwroot'. – Tseng

+1

. Пожалуйста, обратитесь к документации ASP.NET. Https: // docs .asp.net/ru/последние/публикации/iis.html для пошагового руководства – Tseng

2

Папка wwwroot/bin только для хранения одного файла AspNet.Loader.dll. AspNet.Loader.dll был/использовался IIS для загрузки приложения (которое находится за пределами папки wwwroot).

Причина этого - увеличение безопасности. С ASP.NET Core 1.0 вы не указываете запись приложения в папку (содержащую все файлы * .cs в ASP.NET 4.5), но указываете ее на папку wwwroot вашего приложения.

Теперь IIS не имеет доступа к фактическим файлам приложений (и разрешает их случайным доступом к, возможно, чувствительным файлам). Поэтому для выполнения вашего приложения требуется AspNet.Loader.dll.

Помимо этого нет других двоичных файлов в wwwroot/bin и не должно быть никаких других.

Update:

Раньше это требуется для Helios, чтобы запустить/размещенный в пределах IIS. Helios has been deprecated с beta8, потому что не имеет смысла разрабатывать два разных сервера. Таким образом, wwwroot/bin всегда будет пустым для более новых версий ASP.NET Core. Если вы нашли сообщения или ссылки, они скорее всего ссылаются на старую бета-версию.

Теперь Kestrel, IIS с помощью HttpPlatformhandler (до rc1-final версии и ASP.NET Core Module с код2 и новее) и само-хостинга с помощью HttpListener являются поддерживаются режимы прогонов. Хотя можно использовать Kestrel за IIS.

Смежные вопросы