小编M. *_*ann的帖子

MVC 5 WebAPI - 下载文件 - HttpException

我创建了一个基于MVC 5的WebAPI控制器 - 为我们的客户提供不同的文件.访问文件的工具也是自编写的 - 基于.NET HttpClient - 但这是另一个故事.

在下载控制器的第一个版本,我使用的生成机制来提供像文件这样

但是这个机制在我的iis上崩溃了4GB以上的文件.

所以我终于来到了这段代码:

    public class DownloadController : ApiController
    {
        public async Task Get(long id)
        {
            string fullFilePath = GetFilePathById(id);
            string returnFileName = fullFilePath.Split('\\').Last();
            FileInfo path = new FileInfo(fullFilePath);
            HttpContext.Current.Response.ContentType = "application/zip";
            HttpContext.Current.Response.AddHeader("Content-Length", path.Length.ToString());
            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + returnFileName);
            HttpContext.Current.Response.Flush();
        try
        {
            byte[] buffer = new byte[4096];
            using (FileStream fs = path.OpenRead())
            {
                using (BufferedStream bs = new BufferedStream(fs, 524288))
                {
                    int count = 0;
                    while ((count = bs.Read(buffer, 0, buffer.Length)) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api

6
推荐指数
1
解决办法
658
查看次数

protobuf-net - 列出支持的类型

我正在开发一个自定义 ProtoBufFormatter (:MediaTypeFormatter),它能够将自己的类型动态注册到用于序列化/反序列化的 RuntimeTypeModel。

为了减少对 try{}catch{} 块的需求,最好在将已支持的类型添加到 RuntimeTypeModel 之前过滤掉它们。自述文件仅提供默认支持的“模糊”列表类型,并且方法 Model.GetTypes() 仅返回手动添加到当前模型的类型列表。

自述文件: https: //github.com/mgravell/protobuf-net

我正在使用 protobuf-net 2.4.0

所以我想知道是否有任何简单的方法来检查当前 RuntimeTypeModel 是否已支持某种类型?目前我正在使用类似的东西来预过滤类型:

    private bool IsSimpleType(Type type)
    {
        return
            type.IsPrimitive ||
            _additionalSimpleTypes.Contains(type) ||
            Convert.GetTypeCode(type) != TypeCode.Object ||
            (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>) && IsSimpleType(type.GetGenericArguments()[0]));
    }

    private Type[] _additionalSimpleTypes = new Type[]
    {
                typeof(Enum),
                typeof(String),
                typeof(String[]),
                typeof(Decimal),
                typeof(DateTime),
                typeof(DateTimeOffset),
                typeof(TimeSpan),
                typeof(Guid),
                typeof(Uri),
                typeof(Byte),
                typeof(Byte[]),
                typeof(Char),
                typeof(Boolean),
                typeof(Object),
                typeof(Version)
    };

    private Type[] _listTypes = new Type[]
    {
        typeof(Enum),
                typeof(IEnumerable<>),
                typeof(List<>),
                typeof(IList<>)
    };
Run Code Online (Sandbox Code Playgroud)

c# protobuf-net

4
推荐指数
1
解决办法
641
查看次数

ASP.NET SignalR - 空闲时消耗的带宽

现在我们正在为即将到来的项目评估 SignalR。我们希望使用 SignalR 的“永远在线”功能来获得连接 C# 客户端的在线状态。SignalR 通道的主要工作是获取状态并不时将一些 ID 从服务器推送到客户端。

据我研究,SignalR 将为此目的做得很好,因为我们不打算像那些股票示例那样使用该通道进行大量数据传输。

但有一个部分我找不到任何信息:

空闲的 SignalR (WebSocket) 通道会产生多少流量?在生产中,我们将有大约 10.000 个客户端连接到一台服务器(主要是内部公司网络)。有没有像“每个客户端在空闲时产生大约 10kbps 的流量”这样的经验法则?在我有 3-4 个客户端的实验室环境中,我无法创建可测量的流量。

来自生产环境的任何提示都会很棒。

c# asp.net websocket signalr

2
推荐指数
1
解决办法
754
查看次数

ECDiffieHellmanCng PublicKey 始终相同吗?

我正在使用 C# ECDiffieHellmanCng 类,并使用示例中的代码发现了一个(在我看来奇怪的)行为任何项目中生成的每个公钥都是相同的!这是正确且理想的行为吗?

例子:

using (ECDiffieHellmanCng bob = new ECDiffieHellmanCng())
            {
                bob.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash;
                bob.HashAlgorithm = CngAlgorithm.Sha256;
                Trace.WriteLine(Encoding.UTF8.GetString(bob.PublicKey.ToByteArray()));
            }
Run Code Online (Sandbox Code Playgroud)

跟踪始终将“ECK5B”作为输出。使用不同的构造函数只会使输出略有不同,但事实并非如此,它始终是相同的。我是否误解了什么,这个结果符合预期,并且没有机会提供随机公钥?我只是认为系统会使用更多的随机性。

c# cryptography

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