我有一个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)的作用。我在这里做错了什么?
答案 0 :(得分:0)
好吧,这个问题完全没有关系,虽然我仍然感到困惑,为什么WebApi没有做正确的事情。创建我的网址的代码意外添加了一个额外的&
字符,所以我的网址实际上就是这样:
/api/MyController/GetSomething?Id=123&
当我删除这个额外的&
时,默认参数再次起作用。
我真的不明白为什么它打破了WebApi中的默认参数机制。