Конечная точка веб-интерфейса ASP.net не работает - PullRequest
0 голосов
/ 23 мая 2019

Я создал конечную точку в asp.net webapi, которая принимает два параметра. Я использую почтальон, чтобы проверить это, но конечная точка не поражает. У меня есть другие методы, которые бьют, у которых нет переданных параметров. Не уверен, почему это вызывает проблему.

Я попытался вызвать конечную точку, используя следующий URL в почтальоне

http://localhost:56888/api/terms/reviewlegalfundclass/11166/2

Я также изменил атрибут route [Маршрут ( "API / термины / {fundclassId} / {reviewtypeId}")]

То, что я видел работы, это комбинация

  [Route("api/terms/reviewlegalfundclass/{id}")]
  http://localhost:56888/api/terms/reviewlegalfundclass/11166 - postman call

Вот как настроена маршрутизация в webapi.config

 public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "WebApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );


        config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

        var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
        config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);

        config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

        config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());

        config.Formatters.Add(new BsonMediaTypeFormatter());
    }
}

Контроллер

[System.Web.Http.HttpPut]
[SkipTokenAuthorization]
[Route("api/terms/reviewlegalfundclass/{fundClassId}/{reviewTypeId}")]
public string ReviewLegalFundClass(int fundClassId, int reviewTypeId)
{
    var svc = Resolve<IUserIdentityService>();
    var user = svc.GetCurrentUser();

    try
    {
        var fcService = GetService<LEGAL_FUND_CLASS>();
        var fundClass = fcService.Get(fundClassId);
        var response = "N/A";
        var users = GetViewService<V_PERMAL_USER_ALL>().GetAll();

        if (reviewTypeId == (int)LegalFundClassReviewType.Fees)
        {
            fundClass.FEES_LAST_REVIEWED_BY_ID = user.ID;
            fundClass.FEES_LAST_REVIEWED_DATE = DateTime.Now;

            var feeUsr = users.FirstOrDefault(x => x.ID == fundClass.FEES_LAST_REVIEWED_BY_ID);
            response = $"Last Reviewed: {feeUsr?.LOGIN_NAME} {fundClass.FEES_LAST_REVIEWED_DATE.Value.ToString(PermalConstants.DateFormat2)}";
        }
        else if (reviewTypeId == (int)LegalFundClassReviewType.Terms)
        {
            fundClass.TERMS_LAST_REVIEWED_BY_ID = user.ID;
            fundClass.TERMS_LAST_REVIEWED_DATE = DateTime.Now;

            var termsUsr = users.FirstOrDefault(x => x.ID == fundClass.TERMS_LAST_REVIEWED_BY_ID);
            response = $"Last Reviewed: {termsUsr?.LOGIN_NAME} {fundClass.TERMS_LAST_REVIEWED_DATE.Value.ToString(PermalConstants.DateFormat2)}";
        }
        else throw new Exception("Invalid fund class review type");

        fcService.Update(fundClass);

        return response;
    }
    catch (Exception ex)
    {
        throw new Exception(ex.Message);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...