编程回忆之C#回忆(如何向webservice传输xml格式字符串)
2012-02-22 20:03
375 查看
如何向webservice传输xml格式字符串
在C#编程中,犹豫考虑到安全问题,webservice是禁止客户端传入xml格式的字符串的。而根据项目需要,我们又经常需要传输xml格式字符串,那应当如何去处理这个问题呢。
一、配置aspx中的参数
当出错时,可以这样么做,
因为aspx中ValidateRequest的值默认为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.asax的Application_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()。 } }
相关文章推荐
- 如何对一xml格式的字符串分析? c#
- [转]C#网络编程(异步传输字符串) - Part.3
- 如何:使用 Split 方法分析字符串(C# 编程指南)
- [转]C#网络编程(同步传输字符串) - Part.2
- C#网络编程(同步传输字符串) - Part.2
- C#网络编程(异步传输字符串) - Part.3[转自JimmyZhang博客]
- C#网络编程(同步传输字符串) - Part.2
- C#网络编程(同步传输字符串) - Part.2
- [转]C#网络编程(异步传输字符串) - Part.3
- C#网络编程(同步传输字符串) - Part.2
- 一个可序列化的C#对象,如何转成一个XML格式的文件或字符串
- 如何:使用 Split 方法分析字符串(C# 编程指南)
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(同步传输字符串) - Part.2
- (转)C#网络编程(同步传输字符串) - Part.2
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- C#网络编程(异步传输字符串) - Part.3
- (转)C#网络编程(异步传输字符串) - Part.3