从 webforms 调用 Web Api 丢失身份验证

Calling WebApi from webforms looses authentication

我正在尝试升级旧项目的某些部分,运行 解决了从 aspx.cs.

调用 webapi 的问题

当我从 htmlpage/angularjs 调用 webapi 时,请求已通过身份验证并且一切正常。

当我尝试从 aspx 页面调用它时,即使 this.User 已通过身份验证(在 aspx 页面上),当在控制器中收到调用时,用户未设置,因此未通过身份验证.

有没有办法通过包含 RVT cookie 或其他东西来验证 webapi 调用?

来电:

    protected void Page_Load(object sender, EventArgs e)
    {

        var accessList = GetAccessList();
    }



    private List<ClientAccessEntityWithStatisticsDto> GetAccessList()
    {
        string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
        ApiHelper.InitializeClient(baseUrl);
        string apiUrl = ApiHelper.ApiClient.BaseAddress + "/client/api/ClientAccess/ClientsUserCanAccessWithStatistics/";
        var task = Task.Run(() => ApiHelper.ApiClient.GetAsync(apiUrl));
        task.Wait();

        return task.Result.Content.ReadAsAsync<List<ClientAccessEntityWithStatisticsDto>>().Result;
    }
}

帮手:

public class ApiHelper
{
    public static HttpClient ApiClient { get; set; }

    public static void InitializeClient(string baseUrl)
    {
        ApiClient = new HttpClient()
        {
            BaseAddress = new Uri(baseUrl)
        };
        ApiClient.DefaultRequestHeaders.Accept.Clear();
        ApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    }
}

任何人都遇到过这个。 只需将所有请求 cookie 解析到 api 调用,它就像一个魅力。