Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# web api中的自定义路由只是重定向到当前页面_C#_Asp.net Mvc_Asp.net Web Api2_Asp.net Web Api Routing - Fatal编程技术网

C# web api中的自定义路由只是重定向到当前页面

C# web api中的自定义路由只是重定向到当前页面,c#,asp.net-mvc,asp.net-web-api2,asp.net-web-api-routing,C#,Asp.net Mvc,Asp.net Web Api2,Asp.net Web Api Routing,作为MVC web api中的一个noob,我可能缺少一些非常明显的东西 但是,在我的ProjectController中,我有以下带有属性的方法(我知道这种方法应该是POST的,但只是简单地测试而已……): 但是,当我打开我的URL时,例如: http://localhost:49923/api/projects/archive/1 页面只是重定向到当前URL,而不调用存档方法。我在方法上也有一个断点来验证它是否被命中 我最好的猜测是,我还必须更新我的web api路由配置,这是默认配置,但

作为MVC web api中的一个noob,我可能缺少一些非常明显的东西

但是,在我的
ProjectController
中,我有以下带有属性的方法(我知道这种方法应该是POST的,但只是简单地测试而已……):

但是,当我打开我的URL时,例如:

http://localhost:49923/api/projects/archive/1
页面只是重定向到当前URL,而不调用存档方法。我在方法上也有一个断点来验证它是否被命中

我最好的猜测是,我还必须更新我的web api路由配置,这是默认配置,但我只是假设路由属性足够了

以下是我的web api路由配置:

public static void Register(HttpConfiguration config)
{
    // Web API configuration and services

    // Web API routes
    config.MapHttpAttributeRoutes();

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

    config.Formatters.JsonFormatter.SupportedMediaTypes
        .Add(new MediaTypeHeaderValue("text/html"));

}
我做错了什么?:-)

编辑:

Clearification 1-我的项目控制器:

public class ProjectsController : ApiController
{

    private ProjectService _projectService;

    public ProjectsController()
    {
        _projectService = new ProjectService();
    }

    [Route("api/projects/archive/{id:int}")]
    [HttpGet]

    public void Archive(int id)
    {
        _projectService.Archive(id);
    }
}
清除2-重定向:


假设我站在主页上(/)。然后我转到URL“
http://localhost:49923/api/projects/archive/1
”,它只需重新加载页面并将我的后背留在主页上。

Web API配置已正确配置。 确保控制器和动作构造正确

public class ProjectController : ApiController {

    //...other code removed for brevity

    [HttpGet]
    [Route("api/projects/archive/{id:int}")]//Matches GET api/projects/archive/1
    public IHttpActionResult Archive(int id) {
        _projectService.Archive(id);
        return Ok();
    }    
}

现在回答有点晚,但希望你觉得有用

很多时候,我们编写代码的方式帮助我们找到问题的解决方案, 正如Nkosi已经回答的那样,正确地构造控制器和动作方法将解决这个问题


首先检查方法而不是查看route.config总是很有帮助的,因为默认情况下,除非您提供自定义属性,否则它将是相同的。

Clearify
页面只重定向到当前URL,而不调用存档方法。
不清楚。同时显示控制器。读取:
public class ProjectController : ApiController {

    //...other code removed for brevity

    [HttpGet]
    [Route("api/projects/archive/{id:int}")]//Matches GET api/projects/archive/1
    public IHttpActionResult Archive(int id) {
        _projectService.Archive(id);
        return Ok();
    }    
}