#.net #owin #asp.net-web-api-routing
#.net #owin #asp.net-web-api-routing
Вопрос:
Я использую WebAPI, и у меня есть настройка маршрута для «api / {controller} / {id}». Но у меня также есть следующая структура папок в проекте:
Staticindex.html
StaticpageY.html
Я хочу, чтобы пользователи веб-сайта могли перейти к:
http://localhost/index.html
http://localhost/pageY.html
Это то, чего я должен избегать в первую очередь? Если нет, есть ли способ сделать такое определение маршрута?
Ответ №1:
Если вы работаете на OWIN, вы можете сделать это, не касаясь маршрутизации Web API. Для этого вы должны иметь возможность использовать промежуточное программное обеспечение Microsoft.Owin.StaticFiles. Пример Setup
класса:
public class Startup
{
public void Configuration(IAppBuilder app)
{
var webApiConfig = new HttpConfiguration();
// Your Web API routing setup here...
app.UseWebApi(config);
var assemblyPath = Assembly.GetExecutingAssembly().Location;
var assemblyFolder = Path.GetDirectoryName(assemblyPath);
var staticFolder = Path.Combine(exeFolder, "Static");
app.UseStaticFiles(webFolder);
}
}
Это будет обслуживать статические файлы из <dll folder>Static
папки. Поэтому, если ваше приложение находится в C:MyApp
, нажатие http://localhost/index.html
, будет C:MyAppStaticindex.html
служить статическим HTML.
Комментарии:
1. У меня это не сработало, отражение получает временную папку для сборок. Даже когда я жестко запрограммировал абсолютный путь в app.UseStaticFiles(@»C:etc «) это не сработало. Предполагается, что первым параметром «UseStaticFiles» должен быть путь запроса (и он не может заканчиваться на «/»), а не физический путь. Я использую Owin.StaticFiles версии v2.1.0.
2. Установите свой файл статического содержимого в VS, чтобы он копировался в каталог сборки.