2016-06-13 57 views
2

如果使用的不是Admin时,如何将web api控制器重定向到mvc主控制器。如果身份角色不是管理员,则从Web Api重定向到MVC控制器

// GET api/adminleave 
     public IEnumerable<ObjectModel> GetPendingLeave() 
     { 
      if (!User.IsInRole("Admin")) 
      { 
       var response = Request.CreateResponse(HttpStatusCode.Moved); 
       response.Headers.Location = new Uri("example.com"); 
       return response; 
      } 
     List<ObjectModel> obj=new List<ObjectModel>(); 
     return obj; 

     } 

我按照上面的方法尝试,但出现错误。

错误27无法隐式转换类型 'System.Net.Http.HttpResponseMessage' 到 'System.Collections.Generic.IEnumerable'。 的显式转换存在(是否缺少 投?)F:\ WebPortal \ WebApplication1 \ \控制器离开\ AdminLeaveController.cs 34 24 WebApplication的

我如何可以重定向形式坎的WebAPI控制器,当我返回来自webAPI控制器的对象列表

回答

1

你试图做什么,在MVC/WebAPI关系方面没有任何意义。在MVC中,整个网站由您的服务器提供,使用WebAPI您依赖于客户端API关系,您可以在其中创建一个API,供任何人使用。

您无法在重定向方面混合使用这些方法。你可以做的是告诉你的客户,在这个特定的场景中需要重定向(但这仍然不是理想的解决方案),并在客户端执行重定向。

试想一下 - 如果你创建了一个可以被“所有人”使用的API,那么执行这种重定向似乎是正确的吗?另一个选择是在你的MVC控制器中调用一个动作并获得结果,但是当用户有一个“Admin”角色时,我假设你想进入另一个页面。

相关问题