当在 asp.net mvc 中首先无法识别控制器时,如何路由到控制器?

尼尔斯斯坦登

我正在尝试创建一个 API 代理程序,以便前端可以使用给定的任何端点调用 api,在代理中我决定要执行的 URL。我有以下问题:

在我的前端,我使用以下 URL 调用我的 API 代理:

http://localhost:54857/getClients

当我的 API Broker 收到此请求时,它会立即返回一个错误,在此错误发生之前,我想将其重定向到与名称getClients不匹配的控制器操作

请求调用我的 API Broker的前端代码:

[HttpGet]
    public async Task<ActionResult> getCall()
    {
        string url = "http://localhost:54857/";
        string operation = "getClients";

        using (var client = new HttpClient())
        {
            //get logged in userID
            HttpContext context = System.Web.HttpContext.Current;
            string sessionID = context.Session["userID"].ToString();

            //Create request and add headers
            client.BaseAddress = new Uri(url);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //Custom header
            client.DefaultRequestHeaders.Add("loggedInUser", sessionID);

            //Response
            HttpResponseMessage response = await client.GetAsync(operation);
            if (response.IsSuccessStatusCode)
            {
                string jsondata = await response.Content.ReadAsStringAsync();
                return Content(jsondata, "application/json");
            }
            return Json(1, JsonRequestBehavior.AllowGet);
        }
    }

在 API Broker 中的路由

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller=Redirect}/{action=RedirectApi}/{id}");
    }

API 代理控制器:

[System.Web.Http.AcceptVerbs("GET")]
    [System.Web.Http.HttpGet]
    public Customer RedirectApi()
    {
        Customer t = dbProducts.Customers
            .Where(h => h.customerID == 1)
            .FirstOrDefault();
        return t;
    }

当 api 方法getClients存在时,我还有一个过滤器

public override void OnActionExecuting(HttpActionContext actionContext)
    {
        //Checks if header is method Get and has attribute
        if ((actionContext.Request.Method.Method == "GET") && (actionContext.Request.Headers.GetValues("loggedinUser").First() != null))
        {

        }
        base.OnActionExecuting(actionContext);
    }

在当前情况下(上面的代码),我收到一个错误,我的 API 代理中的代码甚至没有被执行。我想要实现的是,将 API Broker 中收到的任何给定请求重定向到执行RedirectApi()方法的 API Broker Controller

希望有人能帮忙!

提前致谢!

尼古拉斯

您可以在其他映射代码之后添加此代码:

routes.MapRoute(
"404-PageNotFound",
"{*url}",
new { controller = "Redirect", action = "RedirectApi" }
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.Net MVC @ Url.Action()路由到错误的控制器

来自分类Dev

如何在ASP.NET MVC中将多个参数从jquery发布到控制器?

来自分类Dev

如何将值从一个控制器传递到ASP.Net MVC3中的另一个控制器

来自分类Dev

如何使ASP.NET MVC控制器方法异步

来自分类Dev

处理ASP.NET MVC控制器中的异常

来自分类Dev

如何使Angular POST到C#Asp.Net MVC控制器?

来自分类Dev

如何在控制器ASP.NET MVC 5上禁用默认路由

来自分类Dev

在ASP.NET MVC中获取控制器名称

来自分类Dev

如何使用AJAX将数据发布到ASP.NET MVC控制器?

来自分类Dev

如何将JavaScript数据传递到控制器ASP.NET MVC

来自分类Dev

从ASP.NET MVC控制器将数据发布到ASP.NET Web API控制器时的待处理请求

来自分类Dev

如何将项目列表从视图传递到控制器(ASP.NET MVC 4)

来自分类Dev

从ASP.NET MVC控制器中删除功能

来自分类Dev

如何从角度路由中删除ASP.NET MVC控制器名称

来自分类Dev

如何将元组从JavaScript传递到ASP.NET MVC控制器操作

来自分类Dev

在ASP.Net MVC中的控制器中访问路由URL

来自分类Dev

ASP.NET MVC控制器语法中的Linq

来自分类Dev

如何忽略ASP.NET MVC路由中“控制器/动作”之后的所有字符?

来自分类Dev

ASP.NET MVC:如何绕过MVC应用程序中的控制器?

来自分类Dev

如何使Angular POST到C#Asp.Net MVC控制器?

来自分类Dev

将空列表从控制器传递到控制器ASP.NET MVC

来自分类Dev

如何将列表从控制器传递到ASP.NET MVC中的javascript函数?

来自分类Dev

ASP.NET MVC从同一控制器发布到控制器的操作

来自分类Dev

在 asp .net mvc 中创建 Api 控制器

来自分类Dev

ASP.NET MVC 在控制器中实现分析

来自分类Dev

路由如何与 asp.net mvc 中的默认控制器和操作一起使用

来自分类Dev

ASP.NET MVC 控制器中的持久数据

来自分类Dev

从视图调用控制器并将值从视图传递到 asp.net mvc 中的控制器

来自分类Dev

ASP.NET MVC - 将动态 ExpandoObject 从控制器传递到视图时出现 RuntimeBinderException

Related 相关文章

  1. 1

    ASP.Net MVC @ Url.Action()路由到错误的控制器

  2. 2

    如何在ASP.NET MVC中将多个参数从jquery发布到控制器?

  3. 3

    如何将值从一个控制器传递到ASP.Net MVC3中的另一个控制器

  4. 4

    如何使ASP.NET MVC控制器方法异步

  5. 5

    处理ASP.NET MVC控制器中的异常

  6. 6

    如何使Angular POST到C#Asp.Net MVC控制器?

  7. 7

    如何在控制器ASP.NET MVC 5上禁用默认路由

  8. 8

    在ASP.NET MVC中获取控制器名称

  9. 9

    如何使用AJAX将数据发布到ASP.NET MVC控制器?

  10. 10

    如何将JavaScript数据传递到控制器ASP.NET MVC

  11. 11

    从ASP.NET MVC控制器将数据发布到ASP.NET Web API控制器时的待处理请求

  12. 12

    如何将项目列表从视图传递到控制器(ASP.NET MVC 4)

  13. 13

    从ASP.NET MVC控制器中删除功能

  14. 14

    如何从角度路由中删除ASP.NET MVC控制器名称

  15. 15

    如何将元组从JavaScript传递到ASP.NET MVC控制器操作

  16. 16

    在ASP.Net MVC中的控制器中访问路由URL

  17. 17

    ASP.NET MVC控制器语法中的Linq

  18. 18

    如何忽略ASP.NET MVC路由中“控制器/动作”之后的所有字符?

  19. 19

    ASP.NET MVC:如何绕过MVC应用程序中的控制器?

  20. 20

    如何使Angular POST到C#Asp.Net MVC控制器?

  21. 21

    将空列表从控制器传递到控制器ASP.NET MVC

  22. 22

    如何将列表从控制器传递到ASP.NET MVC中的javascript函数?

  23. 23

    ASP.NET MVC从同一控制器发布到控制器的操作

  24. 24

    在 asp .net mvc 中创建 Api 控制器

  25. 25

    ASP.NET MVC 在控制器中实现分析

  26. 26

    路由如何与 asp.net mvc 中的默认控制器和操作一起使用

  27. 27

    ASP.NET MVC 控制器中的持久数据

  28. 28

    从视图调用控制器并将值从视图传递到 asp.net mvc 中的控制器

  29. 29

    ASP.NET MVC - 将动态 ExpandoObject 从控制器传递到视图时出现 RuntimeBinderException

热门标签

归档