asp.net-mvc-3 - 设置 ObjectContent Web API Preview 5 的最大大小

标签 asp.net-mvc-3 wcf-web-api

当我使用 ObjectContent 对象创建 HttpContent 以通过 HttpClient 向 Web API 服务发送请求时,出现以下错误:

向缓冲区写入的字节数不能超过配置的最大缓冲区大小:65536

以下代码用于发送请求。 Card 对象大约有 15 个属性。

var client = new HttpClient();
var content = new ObjectContent<IEnumerable<Card>>(cards, "application/xml");
MessageBox.Show(content.ReadAsString());  //This line gives me the same error.

var response = client.Post("http://localhost:9767/api/cards", content);

如何将配置的大小更改为大于 65,536?

最佳答案

由于问题出在 ReadAsString 扩展方法中,我建议您创建自己的扩展方法来解决最大缓冲区大小问题。

这是一个 ReadAsLargeString 扩展方法的示例,可能可以解决该问题。

public static string ReadAsLargeString(this HttpContent content)
{
    var bufferedContent = new MemoryStream();
    content.CopyTo(bufferedContent);

    if (bufferedContent.Length == 0)
    {
        return string.Empty;
    }

    Encoding encoding = DefaultStringEncoding;
    if ((content.Headers.ContentType != null) && (content.Headers.ContentType.CharSet != null))
    {
        encoding = Encoding.GetEncoding(content.Headers.ContentType.CharSet);
    }

    return encoding.GetString(bufferedContent.GetBuffer(), 0, (int)bufferedContent.Length);
}

关于asp.net-mvc-3 - 设置 ObjectContent Web API Preview 5 的最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7981735/

相关文章:

wcf - 我应该选择什么框架来构建 WCF Restful API

asp.net-mvc-3 - @Html.ActionLink 不生成链接

ASP.Net MVC3 Azure - 我需要成员(member)提供程序存储过程吗?

c# - 属性路由不起作用

asp.net-mvc-3 - Wcf Web Api 服务路由与常规 asp.net mvc 路由冲突(Web api 预览版 4)

c# - 验证模型属性 WCF Web API

c# - View 是否可以在不先将其保存到文件的情况下显示 WebImage?

c# - 在转换到新供应商期间,如何有效地将一个应用程序映射到两个数据库后端?

c# - 如何在 asp.net mvc 3 razor View 中访问应用程序变量?

iis-7.5 - 无法使用 HttpClient 对 ASP.NET Web Api 服务进行身份验证