.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. 试着用React写项目-利用react-router解决跳转路由等问题(二)

    转载请注明出处:王亟亟的大牛之路 这一篇还是继续写react router相关的内容,废话之前先安利:https://github.com/ddwhan0123/Useful-Open-Source- ...

  2. centos7下yum升级被PackageKit锁定

    新安装centos7后,第一次升级出现下面的错误: Another app is currently holding the yum lock; waiting for it to exit... 另 ...

  3. 全面理解虚拟DOM,实现虚拟DOM

    1.为什么需要虚拟DOM DOM是很慢的,其元素非常庞大,页面的性能问题鲜有由JS引起的,大部分都是由DOM操作引起的.如果对前端工作进行抽象的话,主要就是维护状态和更新视图:而更新视图和维护状态都需 ...

  4. @SuppressWarings注解的作用和用法

    一.前言 编码时我们总会发现如下变量未被使用的警告提示: 上述代码编译通过且可以运行,但每行前面的“感叹号”就严重阻碍了我们判断该行是否设置的断点了.这时我们可以在方法前添加 @SuppressWar ...

  5. A start job is running for Raise network interface(5min 13s )问题解决方法

    命令:sudo vim /etc/systemd/system/network-online.target.wants/networking.service将里面的TimeoutStartSec=5m ...

  6. Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR)

    sudo apt-get install libsdl-dev或 sudo apt-get install libsdl1.2-dev

  7. Django 综合篇

    前面,已经将Django最主要的五大系统介绍完毕,除了这些主要章节,还有很多比较重要的内容,比如开发流程相关.安全.本地化与国际化.常见工具和一些框架核心功能.这些内容的篇幅都不大,但整合起来也是Dj ...

  8. VC6的VCVARS32.BAT所在位置

    1. C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT 2.

  9. Chrome开发者工具之JavaScript内存分析(转)

    尽管JavaScript使用垃圾回收进行自动内存管理,但有效的(effective)内存管理依然很重要.在这篇文章中我们将探讨分析JavaScript web应用中的内存问题.在学习有关特性时请确保尝 ...

  10. Android 实现文件上传功能(upload)

    文 件上传在B/S应用中是一种十分常见的功能,那么在Android平台下是否可以实现像B/S那样的文件上传功能呢?答案是肯定的.下面是一个模拟网站程 序上传文件的例子.这里只写出了Android部分的 ...