Маршруты атрибутов к контроллерам MVC не разрешаются

Я использую приложение Self-Host из командной строки на основе OWIN, и новые маршруты атрибутов прекрасно работают с моими контроллерами веб-API. Однако они не работают для моих обычных контроллеров MVC.

Я попытался сопоставить маршруты по-старому с помощью шаблона маршрута в моем методе запуска, а также попытался сделать это с маршрутами атрибутов. В любом случае, я получаю 404, когда пытаюсь пройти по этим маршрутам.

В моем стартовом коде я вызываю метод расширения IAppBuilder.UseWebApi(...), определенный в классе Owin.WebApiAppBuilderExtensions, но я не видел эквивалента для MVC, например UseMvc(...). Могут ли они сосуществовать? Я упускаю что-то очевидное?

Вот мой стартовый код:

var config = new HttpConfiguration();
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(Startup.OAuthOptions.AuthenticationType));
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.MapHttpAttributeRoutes();

app.UseCookieAuthentication(CookieOptions);
app.UseExternalSignInCookie(CookieAuthenticationDefaults.ExternalAuthenticationType);
app.UseOAuthBearerTokens(OAuthOptions, ExternalOAuthAuthenticationType);
app.UseFacebookAuthentication(appId: "12345", appSecret: "abcdef");
app.UseWebApi(config);

А вот мой старый добрый класс MVC:

[RoutePrefix("Home")]
public class HomeController : Controller
{
    [HttpGet("Index")]
    public ActionResult Index()
    {
        return Content("Hello world!", "text/plain");
    }
}

Когда я нажимаю /Home/Index в своем приложении, я получаю 404.


person gzak    schedule 01.10.2013    source источник


Ответы (2)


В настоящее время ASP.NET MVC не работает на OWIN. Веб-API был создан совсем недавно и с учетом такого типа гибкости, поэтому он был отделен от System.Web, в частности HttpContext, что позволяет ему работать на OWIN.

Некоторые альтернативы, которые работают на OWIN: FubuMVC, Нэнси и Simple.Web

Дэвид Фаулер проделал некоторую работу над этим и имеет работающий прототип MVC, работающий на OWIN, но код не была обнародована, и не было ни слова о том, будет ли это в ближайшее время.

person Brian Surowiec    schedule 13.10.2013

Убедитесь, что у вас установлен пакет NuGet "WebApp API" для AttributeRouting.

Аналогичный вопрос: Маршрутизация атрибутов MVC не работает

person Nikolay Kostov    schedule 01.10.2013
comment
Близко, но на самом деле я использую систему маршрутизации атрибутов, которая поставляется с ASP.NET 5.0.0-RC1 (часть Visual Studio 2013 RC), так что это не совсем то же самое. - person gzak; 02.10.2013