首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET Web操作路由不工作

ASP.NET Web操作路由不工作
EN

Stack Overflow用户
提问于 2017-07-26 01:56:01
回答 1查看 4.1K关注 0票数 1

我对Web很陌生,我知道web和MVC的一个不同之处在于,web使用HTTP方法来选择按约定调用的方法。

现在我在我的路线中添加了一个动作参数,我想我知道出了什么问题,这个路线不起作用。

这是我的控制器,主要问题是我只需要映射SignInSignUp方法。(其他RestFul方法运行良好。)

代码语言:javascript
运行
复制
public class UsersController : ApiController
{
    private Model1Container db = new Model1Container();

    public IEnumerable<User> GetUsers()
    {
        return db.UserSet;
    }

    [HttpPost]
    public IHttpActionResult SignIn(string account, string password)
    {
        ...
    }

    [HttpPost]
    public IHttpActionResult SignUp(User user)
    {
        ...
    }

    public IHttpActionResult GetUser(int id)
    {
        ...
    }

    public IHttpActionResult PutUser(int id, User user)
    {
        ...
    }

    public IHttpActionResult DeleteUser(int id)
    {
        ...
    }

}

我甚至尝试在两种方法的前两条路径上添加直接约束,

代码语言:javascript
运行
复制
config.Routes.MapHttpRoute(
            name: "UsersSignIn",
            routeTemplate: "api/Users/SignIn",
            defaults: new { controller = "Users", action = "SignIn" }
        );

config.Routes.MapHttpRoute(
            name: "UsersSignUp",
            routeTemplate: "api/Users/SignUp",
            defaults: new { controller = "Users", action = "SignUp" }
        );

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

但结果表明,POST "api/Users/SignUp"“api/”可以映射到SignUp方法,但"api/Users/SignIn"始终没有成功。

下面是我如何在POSTMAN中试用API

请指出我哪里出了问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-26 03:27:09

如果使用属性路由,则需要区分这两条路由。而且,一旦使用路由,它就是控制器本身上的全部或全部。你不能把它们和传统路线混为一谈。

回顾ASP.NET Web 2中的属性路由

代码语言:javascript
运行
复制
[RoutePrefix("api/Users")]
public class UsersController : ApiController {
    private Model1Container db = new Model1Container();

    [HttpGet]
    [Route("")] //Matches GET api/Users
    public IEnumerable<User> GetUsers() {
        return db.UserSet;
    }

    [HttpPost]
    [Route("SignIn")] //Matches POST api/Users/SignIn
    public IHttpActionResult SignIn(string account, string password) {
        //...
    }

    [HttpPost]
    [Route("SignUp")] //Matches POST api/Users/SignUp
    public IHttpActionResult SignUp([FromBody]User user) {
        //...
    }

    [HttpGet]
    [Route("{id:int}")] //Matches GET api/Users/5
    public IHttpActionResult GetUser(int id) {
        //...
    }

    [HttpPut]
    [Route("{id:int}")] //Matches PUT api/Users/5
    public IHttpActionResult PutUser(int id,[FromBody]User user) {
        //...
    }

    [HttpDelete]
    [Route("{id:int}")] //Matches DELETE api/Users/5
    public IHttpActionResult DeleteUser(int id) {
        //...
    }
} 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45316157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档