#asp.net-mvc #asp.net-web-api2
#asp.net-mvc #asp.net-web-api2
Вопрос:
У меня есть класс, определенный ниже, и я использую его со следующими URL-адресами
Этот URL работает: http://rooturl.com/website/api/v1/queuedNotifications
Этот URL не http://rooturl.com/website/api/v1/queuedNotifications/4b2a366b-e349-468d-99e6-b60918dc79f9
Этот URL не http://rooturl.com/website/api/v1/notifications/4b2a366b-e349-468d-99e6-b60918dc79f9
Он не распознает GUID в конце URL-адреса в качестве параметра для GET. кто-нибудь может сказать мне, что я могу делать неправильно? Я установил ограничение на префикс маршрута для GUID, и имена параметров совпадают… не уверен, в чем дело.
Я получаю ошибку 404.0 с URL-адресами, которые не работают
<fieldset>
<legend>Error Summary</legend>
<h2>HTTP Error 404.0 - Not Found</h2>
<h3>The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.</h3>
</fieldset>
Определение класса
[RoutePrefix("api/v1")]
[Authorize]
public class NotificationsService : BaseApiService
{
private readonly INotificationsService _notificationsService;
public NotificationsService(INotificationsService notificationsService)
{
_notificationsService = notificationsService;
}
#region UserNotifications
[Route("notifications/{userId:guid}")]
[AllowAnonymous]
[AcceptVerbs("GET")]
public async Task<List<UserNotificationModel>> GetNotifications(Guid userId)
{
return await _notificationsService.GetNotifications(userId);
}
[Route("notification")]
[AllowAnonymous]
[AcceptVerbs("POST")]
public async Task<UserNotificationModel> CreateNotifications(UserNotificationModel model)
{
return await _notificationsService.CreateNotification(model);
}
#endregion
#region Queued Notifications
[Route("queuedNotifications")]
[AllowAnonymous]
[AcceptVerbs("GET")]
public async Task<List<NotificationsQueueModel>> GetQueuedNotifications()
{
return await _notificationsService.GetQueuedNotifications();
}
[Route("queuedNotifications/{userId:guid}")]
[AllowAnonymous]
[AcceptVerbs("GET")]
public async Task<List<NotificationsQueueModel>> GetQueuedNotifications(Guid userId)
{
return await _notificationsService.GetQueuedNotifications(userId);
}
}
Комментарии:
1. Вы когда-нибудь выясняли, в чем была проблема? У меня такая же проблема.
2. Я не могу воспроизвести вашу проблему. Когда я создаю новый контроллер (производный от ApiController), все работает нормально. (Изменен возврат к Ok() и IHttpActionResult).