小编tri*_*tri的帖子

WebAPI和角度JS Excel文件下载 - 文件已损坏

我正在我的WebAPI中生成一个Excel文件.我将它"存储"在一个内存流中,然后将响应输入如下:

var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StreamContent(ms) };

            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = projectName + ".xlsx"
            };
           // ms.Close();
            return result;
Run Code Online (Sandbox Code Playgroud)

看起来服务器端工作正常.如果我将该内存流写入文件流,则会创建该文件,并且可以毫无问题地打开该文件.

在角度方面,如何在单击按钮时重新创建文件?

我试过这样的事情:

$scope.exportQuotas = function (projectName) {
    homeService.GetQuotas(projectName, $routeParams.token, $scope.selection).then(
             function (data) {
                 var dataUrl = 'data:application/octet-stream;' + data
                 var link = document.createElement('a');
                 angular.element(link)
                   .attr('href', dataUrl)
                   .attr('download', "bl.xlsx")
                   .attr('target', '_blank')
                 link.click();
             })
}
Run Code Online (Sandbox Code Playgroud)

该文件已创建但当我尝试打开它时,它已损坏...我已尝试将数据类型更改为vnd.ms-excel in angular但它不起作用...我怎样才能获得该文件点击下载?

编辑 Jorg回答后,我尝试了以下内容:api返回的是:

Status Code: 200
Pragma: no-cache
Date: Tue, 02 Sep 2014 …
Run Code Online (Sandbox Code Playgroud)

c# rest excel asp.net-web-api angularjs

9
推荐指数
1
解决办法
1万
查看次数

微服务架构CQRS

我正在启动一个个人项目,以了解实现微服务的最佳方法。它可能是过度设计的,但它更像是一个学习过程。这可能无关紧要,但我正在使用 .Net Core

我对设计解决方案的想法如下:

  1. 使用CQRS模式可以轻松分离查询和命令。目前,我有两个终点
  2. 我有一个“手动”API 网关,它将充当我需要的不同微服务的代理
  3. 使用NServiceBus在微服务之间进行通信

问题:

  1. 我正在考虑使用 Redis 来缓存查询。例如,缓存用户详细信息。但是,由于它是缓存,我认为它不应该是事实来源,这意味着我将同时更新另一个数据存储。根据我对最佳实践的理解,1 个微服务应该只处理 1 个数据存储。因此,我将创建一个仅处理对我有意义的缓存数据的端点。
    处理和添加/更新命令的最佳方法是什么?更新缓存并触发事件来更新主数据存储?或者更新数据存储和触发事件来更新缓存。我的感觉是,我应该在缓存之前先更新主数据存储(因为我不打算公开端点来更新缓存,它应该仅用于只读目的),但这会导致一些潜在的不一致。虽然我知道,在微服务世界中,数据是“最终一致的”,但这是否意味着对于像更新这样的简单操作,即使用户提交了更改,也可能不会直接更新他的个人数据?
  2. 我可以看到人们越来越提倡事件溯源。如果(目前)我真的不需要审核,甚至不需要重播事件的方法,我是否需要它?我有一种感觉,我可以使用消息总线/传奇来完成这一切,我认为,这比使用事件存储的性能要高得多。我对么?

c# nservicebus redis microservices

5
推荐指数
1
解决办法
604
查看次数

Identityserver 4 和 Ocelot

我正在尝试按照https://ocelot.readthedocs.io/en/latest/features/authentication.html使用 Ocelot 和 IS4

使用时

public void ConfigureServices(IServiceCollection services)
{
    var authenticationProviderKey = "TestKey";

    services.AddAuthentication()
        .AddJwtBearer(authenticationProviderKey, x =>
        {
        });
}
Run Code Online (Sandbox Code Playgroud)

并在 ocelot.json 中使用“TestKey”,它在启动应用程序时抛出错误

无法启动 Ocelot,错误是:TestKey,AllowedScopes:[] is unsupported authentication provider

知道出了什么问题吗?我需要在我的 IdentityServer 应用程序中特别设置一些东西吗?

c# .net-core identityserver4 api-gateway ocelot

5
推荐指数
1
解决办法
2641
查看次数