小编Zre*_*eal的帖子

如何控制 HangFire 中重复作业的 CurrentCulture

我在 Owin 的 asp.net WebApi2 解决方案中使用 HangFire 1.6。

服务器是针对一种文化(da-DK)设置的 - 我无法更改这一点。我的应用程序必须使用另一种区域性 (en-US) 来正确解析它接收到的文本数据。基本上,我只是希望解决方案中的所有内容都使用其他区域性,并且永远不要使用服务器上的区域性。

在我的 web.config 中我有:

<system.web>
    <httpRuntime targetFramework="4.6.1" />
    <globalization enableClientBasedCulture="false" culture="en-US" uiCulture="en-US"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)

在我的Startup Configuration方法中我有

        CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CurrentCulture;
        CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CurrentUICulture;
Run Code Online (Sandbox Code Playgroud)

因为有异步方法,并且我希望所有线程开始共享 web.config 中指定的相同区域性

我还在 HangFire 中运行一些经常性作业

我的问题是,无论我做什么,重复的工作都只是继续使用服务器文化(da-DK)作为 CurrentCulture (CurrentUICulture 似乎对我所做的事情做出反应: HangFire仪表板

我搜索了 Hangfire 文档等,但没有找到任何可以为我解决这个问题的方法。我宁愿避免在重复工作中使用的每个方法的顶部对文化进行硬编码

希望可以有人帮帮我...

后续(2017-11-21):

事实证明,这与 HangFire 无关。显然在运行CultureInfo.CurrentCulture时尚未设置为 web.config 中提供的值,因此此处设置为错误的值。一旦控制器执行,这些值就会设置为 web.config 中的任何内容。Startup.ConfigurationCultureInfo.DefaultThreadCurrentCulture

现在,我决定在 Startup 类中对区域性进行硬编码,以确保在执行任何 Hangfire 重复作业之前已将其设置为 DefaultThreadCurrentCulture

c# currentculture owin asp.net-web-api2 hangfire

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

XmlDocument 无法从 ZipArchive 条目加载流

我有一个包含 XML 文件的 zip 文件。使用 System.IO.Compression ZipArchive 我将 XML 文件作为流(实际上是 DeflateStream)打开:

Stream xmlStream = null;
using (ZipArchive archive = ZipFile.Open(destPath, ZipArchiveMode.Read))
{
    xmlStream = archive.GetEntry(fileNameXml).Open();
}
Run Code Online (Sandbox Code Playgroud)

现在我可以使用 Stream.Read 方法从流中读取数据:

// This works
byte[] buffer = new byte[10];
int tmp = xmlStream.Read(buffer, 0, 10);
Run Code Online (Sandbox Code Playgroud)

然而,我真正想做的是将数据加载到 XmlDocument 中,如下所示:

XmlDocument xmlDoc = new XmlDocument();
// This throws 'NotSupportedException'
xmlDoc.Load(xmlStream);
Run Code Online (Sandbox Code Playgroud)

但这会引发 NotSupportedException 并显示消息“来自 ZipArchiveEntry 的流不支持读取”。

我当然可以提取 XML 文件并打开该文件,但在我看来,直接从流中读取是一个更好的解决方案 - 如果我能让它工作的话!

c# xml zip

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

标签 统计

c# ×2

asp.net-web-api2 ×1

currentculture ×1

hangfire ×1

owin ×1

xml ×1

zip ×1