相关疑难解决方法(0)

Json.NET能否对流进行序列化/反序列化?

我听说Json.NET比DataContractJsonSerializer更快,想试一试......

但我在JsonConvert上找不到任何采用流而不是字符串的方法.

例如,为了在WinPhone上反序列化包含JSON的文件,我使用以下代码将文件内容读入字符串,然后反序列化为JSON.在我的(非常临时)测试中,使用DataContractJsonSerializer直接从流中反序列化似乎要慢4倍...

// DCJS
DataContractJsonSerializer dc = new DataContractJsonSerializer(typeof(Constants));
Constants constants = (Constants)dc.ReadObject(stream);

// JSON.NET
string json = new StreamReader(stream).ReadToEnd();
Constants constants = JsonConvert.DeserializeObject<Constants>(json);
Run Code Online (Sandbox Code Playgroud)

我做错了吗?

.net serialization json.net

137
推荐指数
5
解决办法
14万
查看次数

C# MemoryStream - 此流不支持超时

我正在尝试动态创建 csv 文件并将流输出到浏览器。

这是我的 api 端点:

    [System.Web.Http.HttpGet]
    [System.Web.Http.Route("export-to-csv")]
    public FileStreamResult ExportDeposits([FromUri(Name = "")]DepositSearchParamsVM depositSearchParamsVM)
        {
            if (depositSearchParamsVM == null)
            {
                depositSearchParamsVM = new DepositSearchParamsVM();
            }
            var records = _DepositsService.SearchDeposits(depositSearchParamsVM);
            var result = _DepositsService.WriteCsvToMemory(records);
            var memoryStream = new MemoryStream(result);

            return new FileStreamResult(memoryStream, "text/csv") { FileDownloadName = "export.csv" };
    }
Run Code Online (Sandbox Code Playgroud)

这是我的服务方法:

public byte[] WriteCsvToMemory(IEnumerable<DepositSummaryVM> records)
        {
            using (var stream = new MemoryStream())
            using (var reader = new StreamReader(stream))
            using (var writer = new StreamWriter(stream))
            using (var csv = new CsvWriter(writer))
            {
                csv.WriteRecords(records); …
Run Code Online (Sandbox Code Playgroud)

c# csv memorystream csvhelper

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

如何从 Azure 函数返回流?

我正在尝试使用 dotnet core 作为持久函数的一部分编写 Azure Function v2。我想创建一个活动函数,它从 blob 存储中读取文件,对其进行解密并返回解密后的字节流。我可以创建解密的流,并尝试像这样返回流:

[FunctionName("Decrypt")]
public static async Task<IActionResult> Run(
    [ActivityTrigger] string blobName,
    ILogger log,
    ExecutionContext context)
{
    // get stream from blob storage

    var bytes = await GetDecryptedByteArrayAsync(blobStream);
    return new FileContentResult(bytes, "application/octet-stream");
}
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但是当我尝试阅读这样的回复时:

        var provisioningArchive = await
            ctx.CallActivityAsync<FileContentResult>("Decrypt", encryptedBlobName);
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

Newtonsoft.Json.JsonSerializationException:无法找到用于 Microsoft.AspNetCore.Mvc.FileContentResult 类型的构造函数。一个类应该有一个默认构造函数、一个带参数的构造函数或一个用 JsonConstructor 标记的构造函数

我怎样才能让它反序列化成一个代表流的对象?

stream azure .net-core azure-functions azure-durable-functions

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