相关疑难解决方法(0)

在ASP.NET MVC中设置默认的JSON序列化程序

我正在处理已部分转换为MVC的现有应用程序.每当控制器使用JSON ActionResult进行响应时,枚举将作为与字符串名称相对的数字发送.这听起来像默认的序列化程序应该是JSON.Net,它应该发送枚举,因为它们的名称与整数表示相反,但事实并非如此.

我是否缺少将其设置为默认序列化程序的web.config设置?或者是否有其他需要更改的设置?

c# asp.net-mvc json.net asp.net-mvc-4

57
推荐指数
2
解决办法
6万
查看次数

如何将JSON.NET作为ASP.NET MVC控制器的模型绑定器?

ASP.NET Web API团队已决定将JSON.NET库用于模型绑定JSON数据.但是,"普通"MVC控制器仍然使用劣质JsonDataContractSerializer.这会导致解析日期的问题,并且让我很头疼.

请参阅此参考:http:
//www.devcurry.com/2013/04/json-dates-are-different-in-aspnet-mvc.html

作者选择在客户端的Knockout层中解决问题.但我更愿意通过在MVC控制器中使用与Web API控制器中相同的JSON.NET模型绑定器来解决此问题.

如何将不同的JSON模型绑定器替换为ASP.NET MVC?具体来说,就是JSON.NET库.如果可能,使用Web API中的相同模型绑定器将是理想的.

asp.net-mvc json model-binding

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

帮助从HttpContext.InputStream中读取JSON

我创建了一个HttpModule来捕获审计请求.

对于Web方法的Ajax请求,我还想记录与请求关联的JSON数据.

例如请求

POST /MyPage.aspx/AddRecord HTTP/1.1
x-requested-with:XMLHttpRequest
Accept-Language:en-gb
Referer:http:// fiddlerlocal:5000/AddRecord.aspx
Accept:application/json,text/javascript,/
Content-类型:application/json; charset = utf-8
UA-CPU:x86
Accept-Encoding:gzip,deflate
User-Agent:Mozilla/4.0(兼容; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
主机:fiddlerlocal:5000
内容长度:287
连接:Keep-Alive
Pragma:no-cache
Cookie:.....
{"id" : "282aa3b5-b55f-431C-916e-60433fdb61c0", "日期":"

我已经尝试了各种方法从HttpContext.InputStream中读取JSON({"id":"282aa3b5-b55f-431c-916e-60433fdb61c0","date":"8-6-2010"}).

例1:

StreamReader reader = new StreamReader(request.InputStream);
string encodedString = reader.ReadToEnd(); - ReadToEnd返回一个空字符串

例2:

using(MemoryStream ms = new MemoryStream())
{
byte [] buffer = new byte [request.ContentLength];
request.InputStream.Read(buffer,0,request.ContentLength);
ms.Write(buffer,0,request.ContentLength); - 字节数组包含正确的字节数但每个字节的值为0 …

asp.net json inputstream xmlhttprequest httpmodule

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

自定义 JsonConverter 不适用于 WebAPI 对象反序列化

我有一个模型对象,我将其发送到浏览器并返回给我。我希望对该对象中的 ID 值进行加密。我创建了一个自定义 JsonConverter 来加密字符串然后解密。

public class SecretItem
{
    [JsonConverter(typeof(EncryptedIdConverter))]
    public string Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的 EncryptedIdConverter 类

class EncryptedIdConverter : JsonConverter
{
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        string encryptedValue = (string)value;

        if (!string.IsNullOrWhiteSpace(encryptedValue))
            encryptedValue = Encryption.EncryptString(encryptedValue);

        serializer.Serialize(writer, encryptedValue);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        string decryptedString = (string)reader.Value;

        if (!string.IsNullOrWhiteSpace(decryptedString))
            decryptedString = Encryption.DecryptString(decryptedString);

        return decryptedString;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

c# json.net asp.net-web-api2

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