编程回忆之C#回忆(如何向webservice传输xml格式字符串)

如何向webservice传输xml格式字符串

C#编程中,犹豫考虑到安全问题,webservice是禁止客户端传入xml格式的字符串的。而根据项目需要,我们又经常需要传输xml格式字符串,那应当如何去处理这个问题呢。

一、配置aspx中的参数

当出错时,可以这样么做,

因为aspxValidateRequest的值默认为true,所以会报错。所以将ValidateRequest的值改为false就可以。

如果,页面中没有配置ValidateRequest参数,它是默认为true的,所以需要在页面aspx中文件头添加上ValidateRequest参数。

<%@ Page  ValidateRequest="false" >


二、针对Edit方法进行特殊配置

例如,Edit方法需要传入xml格式字符串,那就给

[ValidateInput(false)]
public ActionResult Edit()
{
this.ValidateRequest = false;
retrun View();
}

 

三、配置web.config

system.web节点下加入以下配置

<system.web>
  <httpRuntime requestValidationMode="2.0" />
</system.web>

 


 

注:以上这些方式都是治标不治本的,容易导致webservice不安全。当具有攻击性质的xml传输进来的时候,webservice不能进行防范。所以最好用第四种解决方案。

 

四、用相应的字符代替<>符号

在进行xml格式字符串传输的时候,将字符串通过格式转换,用相应的字符串代替

 

StringBuilder sb = new StringBuilder(
HttpUtility.HtmlEncode(htmlInputTxt.Text));
// 然后我们选择性的允许<b> 和 <i>
sb.Replace("<b>", "<b>");
sb.Replace("</b>", "");
sb.Replace("<i>", "<i>");
sb.Replace("</i>", "");
Response.Write(sb.ToString());


 

备注:我们再思考一下为什么这个错误有时候难易发现呢,原因在于我们没有写异常处理,所以异常处理是至关重要的!所以第五点,要写异常处理。

五、异常处理

在你当前页面添加Page_Error()函数,来捕获所有页面处理过程中发生的而没有处理的异常。然后给用户一个合法的报错信 息。如果当前页面没有Page_Error(),这个异常将会送到Global.asaxApplication_Error()来处理,你也可以在那 里写通用的异常报错处理函数。如果两个地方都没有写异常处理函数,才会显示这个默认的报错页面呢。

举例而言,处理这个异常其实只需要很简短的一小段代码就够了。在页面的Code-behind页面中加入这么一段代码:

以下是引用片段:

protected void Page_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex is HttpRequestValidationException)
{
Response.Write("请您输入合法字符串。");
Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。
}
}


 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值