Как получить статус от 500 до 200;) когда я вызываю этот WebAPI через Postman - PullRequest
0 голосов
/ 27 мая 2020

звучит похоже на почти множество вопросов, но это не

вкратце проблема:

Я разместил Asp. net core App на azure, а аутентификация, которую я использовал, - AccessToken.

, когда я пытаюсь отправить запрос Get (получение электронной почты пользователя с использованием графика Microsoft) в браузере, он работает с тех пор, как я вошел в систему.

** everthing fine sofar **

я знаю, что в этой памяти onet браузер кеширует все (сеанс - файлы cookie - accesstoken) на какое-то время, и токен будет повторно использован позже для авторизации последующих вызовов API, но в почтальоне дело обстоит иначе. что я пытаюсь отправить запрос (внешний запрос) до входа в систему (авторизация отсутствует), и это logi c. поэтому я думаю, что это, возможно, причина, по которой я получил ошибку 500 в почтальоне.

можно ли как-нибудь заставить почтальона использовать кеш браузера - или использовать этот токен? или даже сделать вызовы авторизации, например, отправить этот доступ внутри запроса API заголовка? если возможно, я хочу, как реализовать это на стороне сервера ..

что я пробовал:

на стороне сервера - startup.cs -> ConfigureServices i Сконфигурировал службу для разрешения анонимных вызовов и для не зарегистрированные пользователи для выполнения этого запроса.

      services.AddMvc(options =>
       {
           var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser()
              .Build();
           options.Filters.Add(new AuthorizeActionFilter(policy)); 
        });

и в контроллере, где конечная точка api:

[Route("api/[controller]/[action]")]
[ApiController]
[AllowAnonymous]
public class FooController : ControllerBase
{

    protected IExtraService _extraService;
    private readonly ITokenAcquisition _tokenAcquisition;
    private readonly WebOptions _webOptions;


    public FooController(IExtraService extraService)
    {

        _extraService = extraService;

    }


    [HttpGet]
    public async Task<string> FooEmail()
    {

        string FooEmail = string.Empty;

        FooEmail =await _extraService.getFooEmail();

        return FooEmail;
    }

в _extraService -> реализация getFooEmail ()

   public async Task<string> getFooEmail() 
    {

        client = GetGraphServiceClient(new[] { Services.Constants.ScopeUserReadBasicAll});
        var searchResult = (User)await client.Me.Manager.Request().GetAsync();
        return searchResult.Mail;
    }

что делать вы думаете об этом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...