Я использую приложение 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.