7

如果我有一个 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?

4

1 回答 1

1

只是 JSON——不。您只能IHttpHandlerFactory使用重新定义整体

<add verb="*" path="*.asmx" type="YourScriptHandlerFactory" validate="false"/>

但这意味着您将需要使用反射回退到默认实现,或者实现您的System.Web.Script.Services命名空间模拟(非常大)。

实际上,我出于其他目的(集中错误处理)使用反射回退来做到这一点,所以它应该是可能的,但它需要精度并且在 .NET 版本之间会非常脆弱。

你使用经典的 ASP.NET 还是 MVC?如果你使用 MVC,只需使用一个控制器,它就容易多了。

于 2010-11-06T11:51:29.987 回答