基于ASP.NET 3.5 Web Service的JSON扩展应用
= null)
{
Context.Response.Write("throw new Exception(''The Web
Service method " +
ServiceMethodName + " is not available " +
"as a JSON
function. For more " +
"information
contact " +
"the Web
Service Administrators.'');");
}
else
{
//ToDo: deserialize parameters, call target method,
// deserialize and write return value
}
Context.Response.Flush();
Context.Response.End();
}
private JSONMethodAttribute GetMethodJSONMethodAttribute(string
WebServiceMethodName)
{
MethodInfo ActiveMethod = this.GetType().GetMethod
(WebServiceMethodName);
JSONMethodAttribute JMA = null;
if (ActiveMethod != null)
{
object[] Attributes = ActiveMethod.GetCustomAttributes
(true);
foreach (object Attribute in Attributes)
{
if (Attribute.GetType() == typeof
(JSONMethodAttribute))
{
JMA = (JSONMethodAttribute)Attribute;
}
}
}
return JMA;
}
}
}
GetMethodName检索功能的名称来自URL函数调用。当希望Web方法通过HTTP POST或GET的时候,该方法 的名字是在URL中。上述InterceptJSONMethodRequest仍然需要完成,但是,我们如何取消响应,并结束时有权终止响应。如果不这样做,将离开 EnhancedWebService类构造器,我们不希望让发生ASP.NET服务控制将进行服务的请求完成SOAP响应,很显然我们正在处理一个JSON请求。 此外,我们内部InterceptJSONMethodRequest 和GetMethodJSONMethodAttribute检索 [JSONAttribute]的方法被调用,如果还没有被调用那么我们将抛出一个异常。 你可以在服务器端抛出,但是当它到达用户端时候,浏览器将不能消息调试。显然,我们也将需要有 一种方式从JSON来序列化和反序列化。由于.NET3.5已经是内置的Ajax,先添加下面两项功能的ExtendedWebService类: private string JSONSerialize(object SerializationTarget) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(SerializationTarget.GetType()); MemoryStream ms = new MemoryStream() |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |