如果我有一个Web服务(.asmx)并且我希望它使用Json.NET来序列化我从该Web服务返回的所有对象,有没有办法做到这一点?
换句话说,我有一个这样的课:
[JsonObject(MemberSerialization.OptOut)]
public partial class Person
{
public string FirstName {get; set;}
public string LastName {get; set;}
[JsonIgnore]
public string Password {get; set;}
}
在我的网络服务中,我有这个:
[WebMethod]
public Person GetBlahPerson()
{
Person p = new Person();
p.FirstName = "bob";
p.LastName = "smith";
p.Password = "don't tell";
return p;
}
如果使用jQuery我将返回类型设置为json,它将我的对象序列化为json。
是否可以通过web.config中的设置或类似方式使其使用Json.net?
答案 0 :(得分:1)
只是JSON - 没有。您只能使用
重新定义整个IHttpHandlerFactory
<add verb="*" path="*.asmx" type="YourScriptHandlerFactory" validate="false"/>
但这意味着您需要使用反射回退到默认实现,或者实现System.Web.Script.Services
命名空间的模拟(非常大)。
我实际上是为了其他目的而使用反射回退(集中式错误处理),因此它应该是可能的,但它需要精确度,并且在.NET版本之间会非常脆弱。
您使用的是经典的ASP.NET还是MVC?如果你使用MVC,只需使用一个控制器,它就容易多了。