C# Asp.net MVC Web API调用重定向到Accountcontroller登录

C# Asp.net MVC Web API调用重定向到Accountcontroller登录,c#,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,我的代码是 RouteConfig: public static void RegisterRoutes(RouteCollection routes) { routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Dashboard", action =

我的代码是

RouteConfig:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
        );
    }
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Formatters.Clear();
        config.Formatters.Add(new JsonMediaTypeFormatter());
    }
public class ServicesController : ApiController
{
    public string Get()
    {
        return "Hello World";
    }

}
    public ActionResult Login(string returnUrl)
    {
        // User Login functionality
        ViewBag.ReturnUrl = returnUrl;

        return View();
    }
WebAPIConfig:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
        );
    }
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Formatters.Clear();
        config.Formatters.Add(new JsonMediaTypeFormatter());
    }
public class ServicesController : ApiController
{
    public string Get()
    {
        return "Hello World";
    }

}
    public ActionResult Login(string returnUrl)
    {
        // User Login functionality
        ViewBag.ReturnUrl = returnUrl;

        return View();
    }
WebAPI控制器:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
        );
    }
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Formatters.Clear();
        config.Formatters.Add(new JsonMediaTypeFormatter());
    }
public class ServicesController : ApiController
{
    public string Get()
    {
        return "Hello World";
    }

}
    public ActionResult Login(string returnUrl)
    {
        // User Login functionality
        ViewBag.ReturnUrl = returnUrl;

        return View();
    }
帐户管理员:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
        );
    }
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Formatters.Clear();
        config.Formatters.Add(new JsonMediaTypeFormatter());
    }
public class ServicesController : ApiController
{
    public string Get()
    {
        return "Hello World";
    }

}
    public ActionResult Login(string returnUrl)
    {
        // User Login functionality
        ViewBag.ReturnUrl = returnUrl;

        return View();
    }
Global.asax.cs

   protected void Application_Start()
    {                     
        GlobalConfiguration.Configure(WebApiConfig.Register);            
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
我在这里面临的问题是: 1.当我在浏览器中调用Webapi时,它会重定向到

有什么想法吗


谢谢,

我想你的问题是你没有对webapiconfig采取行动:

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{param}",
            defaults: new { param = RouteParameter.Optional }
        );
您需要通过以下操作调用控制器:


并将[AllowAnonymous]添加为@qamar sais

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);-我怀疑其中包含身份验证过滤器。试着把它放在评论中。你是如何调用你的服务的?只需将URL“”放入浏览器?是的。通过简单地将url和它调用servicescontroller中的get函数,但返回登录页而不是json结果“hello world”,您在创建项目时是否选择了身份验证模式?尝试向控制器类添加[AllowAnonymous]属性,如果这样可以避免身份验证重定向,则在这种情况下,[authorize]web api控制器类上的属性将不起作用,而一旦这个问题得到解决,我需要实现web api的基本身份验证