Приложение разрывается, когда View Redirect для входа в Azure

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

пока я нажимаю на кнопку, я загружаю различные API и получаю данные в 1 частичном представлении и при загрузке второго частичного представления для PowerBi, которое перенаправляет на Azure Login и разрывает приложение.

public ActionResult Index(){
   var @params = new NameValueCollection
        {
            {"response_type", "code"},
            {"client_id", Properties.Settings.Default.ClientID},
            {"resource", "https://analysis.windows.net/powerbi/api"},
            {"redirect_uri", "http://localhost:13526/Redirect"}
        };


        var queryString = HttpUtility.ParseQueryString(string.Empty);
        queryString.Add(@params);

        string authorityUri = "https://login.windows.net/common/oauth2/authorize/";
        var authUri = String.Format("{0}?{1}", authorityUri, queryString);
        Response.Redirect(authUri);
}

После проверки подлинности Azure выдает токен и загружает powerbi.

EmbedPowerBi

public async Task<ActionResult> EmbedPowerBi ()
{
    AuthenticationResult authResult;
    authResult = (AuthenticationResult)Session["authResult"];
    var token = authResult.AccessToken;
    ViewBag.Token = token;

    var tokenCredentials = new TokenCredentials(token, "Bearer");

    // Create a Power BI Client object. It will be used to call Power BI APIs.
    using (var client = new PowerBIClient(new Uri(ApiUrl), tokenCredentials))
    {
        // Get a list of dashboards.
        var dashboards = await client.Dashboards.GetDashboardsInGroupAsync(GroupId);

        // Get the first report in the group.
        var dashboard = dashboards.Value.FirstOrDefault();
        //var dashboard = dashboards.Value.Where(w => w.Id == "DashboardId");


        // Generate Embed Token.
        var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");
        var tokenResponse = await client.Dashboards.GenerateTokenInGroupAsync(GroupId, dashboard.Id, generateTokenRequestParameters);

        if (tokenResponse == null)
        {
            return View(new EmbedConfig()
            {
                ErrorMessage = "Failed to generate embed token."
            });
        }

        // Generate Embed Configuration.
        var embedConfig = new EmbedConfig()
        {
            EmbedToken = tokenResponse,
            EmbedUrl = dashboard.EmbedUrl,
            Id = dashboard.Id
        };

        return View(embedConfig);
    }

}

Проблема, с которой я столкнулся из-за перенаправления, другое частичное представление влияет на текущее приложение.

В домашнем виде я загружаю частичный вид.

@ Html.Partial ("loadProduct"); @ Html.Partial ("_ EmbedPowerBi");

1 ответ

Вы пытались ссылаться на существующие "Примеры разработчика"? https://github.com/Microsoft/PowerBI-Developer-Samples

https://github.com/Microsoft/PowerBI-Developer-Samples/blob/master/App%20Owns%20Data/PowerBIEmbedded_AppOwnsData/Controllers/HomeController.cs#L133

Кажется, проблема перенаправления вызывает привязку ViewModel к вам EmbedConfig

Другие вопросы по тегам