Ответ 1
Update:
Бен
Предлагаемое решение работает только с Owin. Чтобы заставить его работать в приложении MVC, вы должны использовать только asp.net MVC 6 (часть ядра asp.net или asp.net 5). Но с помощью Web API вы также можете использовать более старые версии. Чтобы настроить приложение, выполните следующие действия:
-
Создайте пустой проект с использованием визуальных студийных шаблонов (не выбирайте веб-API или MVC)
-
Добавьте в проект следующие пакеты Nuget:
Microsoft.AspNet.WebApi
Microsoft.AspNet.WebApi.Owin
Microsoft.Owin.Host.SystemWeb
Microsoft.Owin.StaticFiles
-
Добавить файл Startup.cs и украсить пространство имен следующим
[сборка: OwinStartup (typeof (запуск))]
-
Добавьте следующий код в класс Stratup.cs
public void Configuration(IAppBuilder app) { var config = new HttpConfiguration(); config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new {id = RouteParameter.Optional} ); //Configure the file/ static file serving middleware var physicalFileSystem = new PhysicalFileSystem(@".\client"); var fileServerOptions = new FileServerOptions { EnableDefaultFiles = true, RequestPath = PathString.Empty, FileSystem = physicalFileSystem }; fileServerOptions.DefaultFilesOptions.DefaultFileNames = new[] {"index.html"}; fileServerOptions.StaticFileOptions.ServeUnknownFileTypes = true; fileServerOptions.StaticFileOptions.FileSystem = physicalFileSystem; app.UseFileServer(fileServerOptions); app.UseWebApi(config); }
- Это должно делать магию. Теперь вы можете разместить приложение в IIS. IIS будет обслуживать статические активы только из клиентской папки. Добавьте папку сервера и добавьте контроллеры.
Microsoft.Owin.Host.SystemWeb - это то, что облегчает хостинг приложения Owin в IIS. Параметры службы файлов помогают IIS обслуживать статические файлы только из клиентской папки.
Пожалуйста, дайте мне знать, если у вас есть вопросы.
В соответствии с вашим вопросом структура проекта, которую вы хотите достичь, должна выглядеть следующим образом.
В основном у вас будет только две папки: клиент и сервер. Статические файлы подаются только из папки клиента. Папка сервера недоступна. Если это то, что вам нужно, то это может быть легко достигнуто с помощью автономного хоста Owin с промежуточным программным обеспечением статического файла.
Сам хост работает без какой-либо зависимости от IIS. Но если вы планируете разместить это приложение в Linux, вы можете использовать Asp.NET CORE 1.0. Позже, если вы решите разместить приложение в IIS внутри окон, что может быть достигнуто легко, добавив пакет Microsot.Owin.Host.SystemWeb nuget.
Есть хорошие сообщения в блогах по этой теме. Это ссылка для одного из них. Вот ссылка для достижения того же самого в Asp.NET Core.
Я надеюсь, что это решает ваши проблемы и, пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы.
Спасибо, Сома.