为什么我的默认参数的操作方法会导致404?

时间:2014-03-25 16:15:09

标签: asp.net asp.net-mvc asp.net-web-api asp.net-mvc-routing asp.net-web-api-routing

我有一个WebApi动作方法可以做到这一点:

Public Function GetSomething(Id As Integer, Optional SomeValue As Integer = 0) As HttpResponseMessage

我有标准路线:

    routes.MapHttpRoute _
    (
        "DefaultWebApi",
        "api/{controller}/{action}"
    )

如果我拨打指向Id AND SomeValue的路线,则可以正常使用:

/api/MyController/GetSomething?Id=123&SomeValue=345

但如果我没有指定SomeValue,我会得到一个404:

/api/MyController/GetSomething?Id=123

我根本不明白这一点,因为SomeValue是可选的。如果我没有指定它,我希望框架调用我的方法并只传递默认值,我认为这是MVC(而不是WebApi)的作用。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

好吧,这个问题完全没有关系,虽然我仍然感到困惑,为什么WebApi没有做正确的事情。创建我的网址的代码意外添加了一个额外的&字符,所以我的网址实际上就是这样:

/api/MyController/GetSomething?Id=123&

当我删除这个额外的&时,默认参数再次起作用。

我真的不明白为什么它打破了WebApi中的默认参数机制。