我正在使用.NETFramework v4.7.2
,并且想管理Global.asax.cs
来更改网站的行为。但是我很难理解每一行:
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas(); // (1)
GlobalFilters.Filters.Add(new HandleErrorAttribute()); // (2)
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // (3)
RouteTable.Routes.MapRoute( // (4)
"Default",
"{controller}/{action}/{id}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional}
);
GlobalConfiguration.Configuration.Routes.MapHttpRoute( // (5)
name: "DefaultApi",
routeTemplate: "api/{controller}"
);
}
}
MvcApplication
显示错误页面(如404、500,...).axd
的路径?HomeController.cs
和.cshtml
来显示内容?如何更改为仅显示简单的index.html
?api
并调用nameController.cs
来接收GET
和/或POST
请求吗?
/api/Login
配置简单的POST
请求的接收?这不起作用,仅产生404 (Not Found)
或415 (Unsupported Media Type)
错误:。 LoginController.cs:
[HttpPost]
[ActionName("Login")]
[Route("api/[controller]")]
public HttpResponseMessage LoginPost([FromBody] LoginJson json)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
LoginJson.cs:
public class LoginJson
{
public string Username { get; set; }
public string Password { get; set; }
}
jQuery:
$.ajax({
url: '/api/Login',
type: 'POST',
dataType: "json",
contentType: "application/json, charset=utf-8",
data: JSON.stringify({
Username: username,
Password: password
}),
...
});
答案 0 :(得分:3)
1)我认为这将解释所有有关领域:https://exceptionnotfound.net/asp-net-mvc-demystified-areas/
2)是,但是它允许您自定义在发生错误/异常时默认情况下发生的情况。例如,您可以设置是否出错以重定向到其他控制器...
3)在注释中回答:What is routes.IgnoreRoute("{resource}.axd/{*pathInfo}")-将IgnoreRoute放入MVC的路由配置的原因是确保MVC不会尝试处理请求。这是因为.axd端点需要由另一个HTTP处理程序(不是MVC的处理程序)处理才能提供脚本。
4)不,这仅仅是设置在控制器内执行动作的默认方式...该动作指示要返回的内容(html或cshtml或..)...例如返回常规html,例如:>
public ActionResult Index()
{
return Content("<html></html>");
}
5)类似于4),这是Web API请求的默认路由。您的API调用是正确的,但是您收到的错误意味着您发送给该API的请求是错误的,请参见以下问题:Unsupported media type ASP.NET Core Web API