RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-198316

rdorn's questions

Martin Hope
rdorn
Asked: 2020-10-11 05:43:30 +0000 UTC

是否可以不将数据缓存到文件中?

  • 2

初始数据:

.NET Framework 上的旧项目,SQL Server 上的数据库,文件存储在 IMAGE 类型字段的表中。各种大小的文件,从数十字节到数百兆字节。我知道这一切都已经过时了,但是目前还没有办法改变数据库的结构,唉,在可预见的将来也不会发生这种情况。

新项目 - 服务,ASP.NET Core 上的 Web api,与数据源具有相同的数据库。

一个任务:

应客户的要求,从数据库中获取文件并以FileStreamResult.


实际上,任务本身并不难,从字面上看,但有一个插科打诨我想漂亮地解决。

因此,当前的解决方案组织如下:

  1. 为了不将大文件卸载到服务的内存中,我使用了一个队列SqlReader,它允许您创建一个流到包含文件内容的字段。

  2. 这个流被复制到磁盘上的一个临时文件中,因为如果读取器未释放,连接将被关闭,数据将不可用,因此,FileStreamResult不能直接将这个流给它。

  3. 在完成向客户端的数据传输后,从临时文件中撕下一个流,将其提供给FileStreamResultASP.NET Core 核心并由其安全处置。

  4. 后台运行的服务会定期清理此临时缓存。


现在的实际问题是:是否可以在不将文件的全部内容显式加载到 RAM 的情况下不将数据复制到文件中?或者也许只是我错过/没有找到的更漂亮的解决方案?

可以将流从SqlReader立即发送到 ,而不是复制到文件,FileStreamResult但是您需要确保打开连接直到数据传输结束,因此SqlReader无法处理,如果读者不是处理好了,那么数据传输完成后怎么办,如果没有一个未关闭的链接SqlReader没有留下?使用数据库是通过内部服务组织的,这些服务使用 ASP.NET Core 中内置的 DI 工具注入到控制器中。还是一样,读者可以“稍后”被杀死(好吧,否则他会死,这很难相信)而且我还没有读过有关 ASP.NET Core 的内容?

c#
  • 1 个回答
  • 10 Views
Martin Hope
rdorn
Asked: 2020-07-28 22:23:05 +0000 UTC

导入 CLR 程序集

  • 0

我正在尝试在 SQL Server 2014 上导入 CLR 程序集。

ALTER DATABASE [dbname] SET trustworthy ON;
GO;
sp_configure 'clr enabled', 1;
GO;
RECONFIGURE;
GO;

运行没有错误,业主同意,权利Unsafe Assembly就在那里,方案的权利是完整的,角色sysadmin是可用的。

导入时出现错误:

错误:无法安装程序集“System.DirectoryServices”,因为现有策略禁止使用它。注意力!Microsoft .NET Framework 注册程序集“system.directoryservices,version=2.0.0.0,culture=neutral,publickeytoken=b03f5f7f11d50a3a,processorarchitecture=msil。” 未在基于 SQL Server 的环境中得到充分验证。稍后,当更新或维护此程序集或 .NET Framework 时,公共语言运行库集成例程可能会停止工作。有关详细信息,请参阅 SQL Server 联机丛书。

因此,在 2008 R2 上,所有内容都是从同一来源导入的。会显示类似的警告,但它可以正常导入并且在战斗条件下可以正常工作。

完全自写的用于访问外部服务的库可以正常工作,并且在两种情况下都以相同的方式导入,没有任何问题,只有这样的埋伏。

我可能会错过什么?上述政策位于何处以便可以更正?

好吧,或者如果突然有一种正常的方式来访问 AD 以接收和检查任意用户数据而无需使用 CLR 的公里长脚本和分钟延迟,它也将是一个不错的选择。

PS:第二天我在翻官方文档,如果你翻了,请戳你的鼻子。

sql-server
  • 3 个回答
  • 10 Views
Martin Hope
rdorn
Asked: 2020-04-28 06:17:02 +0000 UTC

我有一个文件,我怎样才能找到里面的内容?

  • 1

这类通常与连载相关的问题开始出现。我认为有必要就此主题发布详细的答案,以免产生相同类型的答案和问题评论。

файлы
  • 1 个回答
  • 10 Views
Martin Hope
rdorn
Asked: 2020-04-20 22:44:40 +0000 UTC

如何使用 VisualStudio 帮助

  • 6

有许多简单的问题可以通过链接或从官方 Microsoft 文档中获取的示例代码来回答。从此类问题的数量不断增加来看,并不是每个人都知道工作室内置的帮助系统的存在,即使知道,也不知道如何快速方便地使用它。

在这里,我们将尝试揭示使用工作室帮助系统的微妙之处。

visual-studio
  • 1 个回答
  • 10 Views
Martin Hope
rdorn
Asked: 2020-03-16 01:07:57 +0000 UTC

调用存储过程时如何获取传给RETURN的值

  • 2

假设我们有一个任意的存储过程,为了实验的纯粹性,让我们采取一个简单的选择:

CREATE PROCEDURE dbo.GetAnswer
AS
RETURN 42

以及在 C# 中调用它的代码

using(SqlConnection con = new SqlConnection(connectionString))
{
    con.Open();
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandText = "dbo.GetAnswer";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.ExecuteNonQuery();
}

如何获取返回值?

替换cmd.ExecuteNonQuery();为cmd.ExecuteScalar();无济于事,因为。ExecuteScalar这样的程序返回null。

c#
  • 1 个回答
  • 10 Views
Martin Hope
rdorn
Asked: 2020-03-07 18:32:30 +0000 UTC

抽象 C# 属性、错误或功能?

  • 2

初始状态:

interface ISomeInterface
{
    int SomeProperty { get; }
}

abstract class SomeClass
{
    public abstract int AnotherProperty { get; }
}

class InheritedClass : SomeClass, ISomeInterface
{

    public int SomeProperty { get; set; }
    public override int AnotherProperty  { get; set; }//Ошибка
}

为什么在派生类中实现抽象属性时添加了抽象属性中未声明的getter或setter会出错?为什么在相同条件下在接口中声明的属性没有错误?

c#
  • 1 个回答
  • 10 Views
Martin Hope
rdorn
Asked: 2020-12-31 21:30:06 +0000 UTC

通用还是非通用

  • 12

在讨论我对问题的回答时,有一个争议点。

假设我们有一个泛型类和其中的三个方法:

class SomeClass<T>
{
    //не обобщенный метод
    public void DoSomething(int x) 
    { 
        Console.WriteLine("True non generic method"); 
    }
    //не обобщенный метод с параметром обобщенного типа класса
    public void DoSomething(T x)
    { 
        Console.WriteLine("Indirectly generic method"); 
    }
    //явно  обобщенный метод
    public void DoSomething<U>(U x)
    { 
        Console.WriteLine("True generic method"); 
    }
}

实际上,问题是具有泛型类类型参数的泛型方法是否是泛型方法?

c#
  • 2 个回答
  • 10 Views
Martin Hope
rdorn
Asked: 2020-12-27 07:28:22 +0000 UTC

如何处理 Microsoft 的 Drag'N'Drop

  • 5

在寻找这个问题的解决方案的过程中,一个新的问题出现了。

在 .NET 中使用 Drag'n'Drop 的 WinForms 控件有几个典型的事件和DoDragDrop方法。

但是有几个问题与它们相关。如果我们DoDragDrop在事件上激活MouseDown,那么在拖动过程完成之前,我们程序的窗口不会接收鼠标事件,但会接收与拖动过程相关的事件。到目前为止,一切似乎都是合乎逻辑的,但是如果在激活对象的拖动后鼠标没有移动,那么该过程不会立即结束,而是无限期超时,此时鼠标事件不会传输到我们的窗口,它实际上导致了上面链接中问题中描述的问题。

对于TreeView并且ListView事实证明有一个开箱即用的解决方案 - 一个事件ItemDrag,但对于可能成为拖放源的其他控件,没有提供这样的解决方案。

到目前为止,只有一种解决方案浮现在脑海:

  1. 在一个事件中MouseDown,提出一个关于可能开始拖放的标志,并记住私有表单字段中的潜在拖动对象。

  2. 通过事件MouseMove,检查鼠标按钮的标志和状态,如果满足指定条件,则调用DoDragDrop参数中的方法,将之前保存的对象作为数据传递给拖动。然后重置标志。

但出于某种原因,在我看来这是一个拐杖,因为根据我们要拖放的内容和位置,代码会有所不同,并且必须为需要此类功能的每个表单复制代码。

实际上问题是,我是否正确理解拖放过程是在操作系统的上下文中执行的,而不是在单个程序中执行的,以确保可以在程序之间拖动对象?如果假设是正确的,那么是否有一种解决方案可以更灵活地解决这些问题,而无需用拐杖制造自行车?如果我的假设不正确,那么在答案中我想看看它是如何工作的。

这个问题是针对 WinAPI 鉴赏家的,但我想在 C# 的上下文中得到一个解决方案。原则上,对我来说,任何适用于 .NET 的解决方案都可以,只要它比已经说明的解决方案更好。

c#
  • 2 个回答
  • 10 Views
Martin Hope
rdorn
Asked: 2020-12-02 12:13:14 +0000 UTC

事件执行

  • 6

在 ILSpy、Google 和一两句脏话的帮助下,我能够准确地重现方法Add和Remove标准的实现event。

结果,事件代码看起来是这样的,无论如何,在Release编译之后,IL代码是100%等价的。在 Debug 中,它自然有所不同,但只是略有不同,即在检查循环条件方面。

//field-like объявление события
public event Action SampleEvent1;

//итоги декомпиляции
private Action eventDelegate;
public event Action SampleEvent2
{
    add
    {
        Action current = eventDelegate, 
        Action comparer;
        do
        {
            comparer = current;
            Action combine = comparer + value;
            current = Interlocked.CompareExchange(ref eventDelegate, combine, comparer);
        }
        while (!object.ReferenceEquals(current, comparer));
    }
    remove
    {
        Action current = eventDelegate, 
        Action comparer;
        do
        {
            comparer = current;
            Action combine = comparer - value;
            current = Interlocked.CompareExchange(ref eventDelegate, combine, comparer);
        }
        while (!object.ReferenceEquals(current, comparer));
    }
}

现在给鉴赏家一个问题:我知道所有这些都是支持多线程所必需的,并且使用lock会导致死锁,但我不完全理解这个选项是如何工作的,最重要的是,为什么。

c#
  • 1 个回答
  • 10 Views
Martin Hope
rdorn
Asked: 2020-11-06 18:29:06 +0000 UTC

在 Git 中克隆存储库时是否可以更改提交消息?

  • 2

我需要将旧的 SVN 存储库克隆到新的 Git 存储库中。过程不用多说了,都已经搞定了,网络上的资料也很多。但有一个问题仍不清楚。我知道如何在克隆时修复用户信息,例如,添加最新邮件。迁移到 Git 时,所有提交都是从头开始创建的。有什么方法可以让我们切入这个过程,用钩子什么的,把 SVN 修订号附在评论上,或者只是用修订号替换评论,我们该怎么做?

我想在克隆期间这样做,因为。现有的修复实时 Git 存储库评论的方法仅适用于孤立的情况,因此需要谨慎。

谷歌在俄语(没想到)或英语中找不到任何有价值的东西。我阅读了文档,但我可能忽略了它,如果是这样的话,请在正确的地方戳你的鼻子。

git
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5