我應該向您展示我的RouteConfig.cs
開始:的Web API - 映射請求URL和身體參數方法的參數
public static void Register(HttpConfiguration configuration)
{
configuration.Routes.MapHttpRoute("noKey",
"{controller}");
configuration.Routes.MapHttpRoute("oneKey",
"{controller}/{id}");
configuration.Routes.MapHttpRoute("twoKeys",
"{controller}/{firstKey}/{secondKey}");
// SomeProperty -> someProperty
var jsonFormatter = configuration.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
我有以下的基類:
public abstract class RestController<Key, PostDTO, PutDTO, QueryData>
{
// ...
protected abstract Task<IHttpActionResult> Put(Key id, PutDTO dto);
// ...
[HttpPut]
[ValidateArgument("dto")]
public async Task<IHttpActionResult> BasePut([FromUri] Key id, [FromBody] PutDTO dto)
{
return await Put(id, dto);
}
}
的ValidateArgumentAttribute
是一個自定義屬性,我做了驗證輸入DTO。
我試圖調用此方法是這樣的:
HTTP PUT - /users/mcicero
正如你所看到的,我有一個UsersController
(/用戶),我希望做一個PUT請求與關鍵mcicero
實體(/用戶/ mcicero)。
DTO沿請求有效載荷發送,由[FromBody]
參數屬性表示。
但是,我收到了一個404 Not Found
響應,就好像端點無法解析爲有效路由一樣。
這裏有什麼問題?
什麼是 「關鍵」 的實際類型? – hazjack
@hazjack在這個例子中(UsersController),它的類型是'string' –
你仔細檢查過url/port嗎?我認爲它應該有效。我的類似案例工作正常:) – hazjack