【问题标题】:Understand Application_Start in Global.asax.cs [closed]了解 Global.asax.cs 中的 Application_Start [关闭]
【发布时间】:2019-03-31 04:02:43
【问题描述】:

我正在使用.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}"
        );
    }
}
  • (1) 有人简要解释了它的作用吗?
  • (2) 它让MvcApplication 显示错误页面(如404、500、...)
  • (3) 忽略所有带有.axd 扩展名的路径?
  • (4) 它创建一个默认页面并调用HomeController.cs.cshtml 来显示一些东西?如何更改为只显示一个简单的index.html
  • (5) 它创建api 并调用nameController.cs 来接收GET 和/或POST 请求?
    • 如何使用POST 配置简单的/api/Login 请求的接收?这不起作用,只给出404 (Not Found)415 (Unsupported Media Type) 错误:

。 登录控制器.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
        }),
        ...
});

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc


    【解决方案1】:

    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

    【讨论】:

    • 感谢您的回答,请注意问题(5)的更改,因为我无法理解我的错误。顺便说一句,链接指的是.NET Core问题,我和.NET Framework
    猜你喜欢
    • 1970-01-01
    • 2013-11-13
    • 2023-03-06
    • 2021-08-21
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2021-01-13
    相关资源
    最近更新 更多