asp.net mvc 接受并返回xml

本文介绍了如何通过修改web.config文件、使用属性[ValidateInput(false)]及创建自定义XmlResult类来禁用ASP.NET的请求验证,从而解决因严格的安全策略导致的XML处理问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.更改web.config 文件 追加节点 <httpRuntime requestValidationMode="2.0" /><pages validateRequest="false"> 
2.接口上追加  [ValidateInput(false)]属性3.创建XmlResult
 <system.web>
    <httpRuntime  requestValidationMode="2.0" />
    <pages validateRequest="false">  
</system.web>
  public class XmlResult : ActionResult
    {
        // 可被序列化的内容
        private object _Data { get; set; }

        // 构造器
        public XmlResult(object data)
        {
            _Data = data;
        }

        // 主要是重写这个方法
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            HttpResponseBase response = context.HttpContext.Response;

            // 设置 HTTP Header 的 ContentType
            response.ContentType = "text/xml";

            if (_Data!= null)
            {
                // 序列化 Data 并写入 Response
                XmlSerializer serializer = new XmlSerializer(_Data.GetType());
                MemoryStream ms = new MemoryStream();
                serializer.Serialize(ms, _Data);
                response.Write(System.Text.Encoding.UTF8.GetString(ms.ToArray()));
            }
        }
    }
 
        [ValidateInput(false)]
        public XmlResult TitanOrderPush(string xml)
        {
            return new XmlResult(xml);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值