.net的webservice不支持web方法的重载,但是可以通过设置WebMethod属性的MessageName字段来达到重载web方法的目的。

通过设置WebMethod属性的EnableSession=true,可让webservice支持session。

通过设置ScriptMethod属性的UseHttpGet=false,可让web方法只接受post请求;如果UseHttpGet=true,可让web方法接受get请求。

通过设置ScriptMethod属性的ResponseFormat,可设置web方法响应的格式。如:ResponseFormat = ResponseFormat.Json。

上代码说明:

.net的webservice代码:

    [WebMethod(Description = "验证登录操作", EnableSession = true, MessageName = "Login")]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public Result Login(string userName, string pwd) {
Result rc = null; try {
if (userName == "" && pwd == "") {
Session["User"] = new UserInfo { UserName = userName, pwd = pwd };
rc = Result.ToResult("true", "登录成功");
}
else rc = Result.ToResult("false", "登录失败");
}
catch (Exception ex) {
// 可以在此保存日志
rc = Result.ToResult("false", ex.Message);
} return rc;
} [WebMethod(Description = "验证登录", EnableSession = true, MessageName = "IsLogin")]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public Result IsLogin() {
Result rc = null; try {
rc = Session["User"] != null ? Result.ToResult("true", "已经登录") : Result.ToResult("false", "暂未登录");
}
catch (Exception ex) {
rc = Result.ToResult("false", ex.Message);
} return rc;
} public class Result {
public string Code { get; set; }
public string Message { get; set; } public static Result ToResult(string code, string message) {
return new Result { Code = code, Message = message };
}
}

同站点下的html代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
function login() {
var url = "http://localhost/wst/Service.asmx/Login";
$.ajax({
url: url,
type: 'POST',
data: '{"userName":"1","pwd":"1"}',//和WebService的web方法的参数一一对应
dataType: 'json',
cache:false,
contentType: 'application/json',//
error: function () { },
success: function(data){
if (data.d != null) {
alert(data.d.Code+" "+data.d.Message);
}
else alert("请求失败!");
}
});
} </script>
</head>
<body>
<input type="button" value="登录" onclick="login()"/> </body>
</html>

用jQuery的ajax访问同源的webserver方法。

.net WebService方法之重载、支持Session、支持request请求和response格式的浅析的更多相关文章

  1. webservice方法内用了session,asp.net调用时注意问题

    可搜索相关:ASP.NET WebService 中使用 ASP.NET_SessionId 当前问题是:我们写了WebService给客户调用,第一个方法是登陆,传入用户名和密码,成功后在Webse ...

  2. Struts2中的session、request、respsonse获取方法

    个人对于struts有一种复杂的心情,平心而论,struts2是个人最早接触到的的框架,在学校的时候就已经开始学习了,大四毕业设计,无疑用的还是struct,那时候SSH还是很流行的,后来出来实习,直 ...

  3. WebService中方法的重载

    阅读目录 一:WebService中的方法是否允许重载? 二:为什么WebService中不支持方法的重载? 三:如何解决WebService中方法的重载? 一:WebService中的方法是否允许重 ...

  4. WebApi 能支持Session

    由于项目实际需要,我希望让WebApi服务也能支持Session,所以便查找资料按照网上的方法开始着手实验. 然后就有了以下的代码,主要是说让WebApi支持Session,要重写Global.asa ...

  5. WebAPI支持Session

    1.在App_Start/WebApiConfig.cs中建立建立HttpControllerHandler和HttpControllerRouteHandler 并覆写它: public class ...

  6. MVC4 WebApi开发中如果想支持Session请做好如下几个方面的问题

    1.在WebApiConfig中建立建立HttpControllerHandler和HttpControllerRouteHandler 并覆写它 public class SessionRouteH ...

  7. 为lumen添加session支持

    为lumen添加session支持,同时配置全局函数csrf_token可用 首先laravel和lumen框架的版本要一致,我这里版本都是5.4 1.复制laravel框架config目录下的ses ...

  8. thinkphp session支持

    系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成,该函数可以完成Session的设置.获取.删除和管理操作. session初始化设置 如果session ...

  9. 对于方法 String.Contains,只支持可在客户端上求值的参数。

    var ProjectLevel_XJJS = "06,07,08,09"; p.Where(e =>ProjectLevel_XJJS.Contains(e.LevelCo ...

随机推荐

  1. 整理ASP.NET MVC 5各种错误请求[401,403,404,500]的拦截及自定义页面处理实例

    http://2sharings.com/2015/asp-net-mvc-5-custom-404-500-error-hanlde https://blog.csdn.net/yhyhyhy/ar ...

  2. window 环境下jdbc访问启用kerberos的impala

    最近,公司生产集群添加kerberos安全认证后,访问集群的任何组件都需要进行认证,这样问题来了,对于impala,未配置kerberos安全认证之前通过impala的jdbc驱动(impala-jd ...

  3. CVS导出&&自定义Attribute的使用

    1.cvs导出:List转为byte[] /// <summary> /// CvsExport帮助类 /// </summary> public static class C ...

  4. grep -v grep

    ps -ef|grep /usr/local/tomcat_coachqa/ |grep -v grep |awk '{print $2}'|xargs kill -9 grep -v grep gr ...

  5. Linux更改主机名

    1.临时 # hostname newhostname 2.修改/etc/hostname文件,需重启 # vim /etc/hostname 3.查看 # hostname Ubuntu18 # h ...

  6. Unix网络编程_卷1卷2

    1. UNIX 网络编程(第2版)第1卷:套接口API和X/Open 传输接口API PDFhttp://www.linuxidc.com/Linux/2014-04/100155.htm UNIX网 ...

  7. JavaScript权威指南--事件处理

    知识要点 客户端JavaScript程序采用了异步事件驱动变成模型(13.3.2节).这种风格并不只应用于web编程,所有使用图形用户界面的应用程序都采用它,它们静待某些事件发生,然后响应. 事件就是 ...

  8. tomcat日志切割和定期删除

    tomcat日志切割和定期删除 在tomcat的软件环境中,如果我们任由日志文件无限增长,总有一天会将磁盘占满的(废话).特别是在日志文件增长速度很快的一些情况下,按日志切割日志文件并删除,就是一件很 ...

  9. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(二)

      五.Graphics layer 1.新增Graphics layer Graphics layer用于显示用户自定义绘制的点.线.面图形.使用时确保xaml文件中Graphics layer定义 ...

  10. English trip -- VC(情景课)5 D

    Read 阅读 Listen and read. 听并读 Notice from Riverside Library Come and visit Riverside Library.The new ...