找了一下关于Asp.NET Forms WebService,大部分都是转贴“chinadhf”的下篇文章:
使用ASP.Net Forms模式实现WebService身份验证
其中提到:System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer();
MyService.WebService service = new App.MyService.WebService();
service.CookieContainer = cookieContainer;
但是,我怎么也没有找到代理实体的CookieContainer属性,惭愧!给各路牛人发邮件、回帖、留消息,都没有人答复,遗憾!!
好在又从网上找到一些资料可以解决我的问题,虽然我也觉得不是最佳解决办法。现在共享出来:
1、创建一个SoapHeader的派生类
public class CredentialSoapHeader : SoapHeader
{
public string UserName
{
get;
set;
}
public string Password
{
get;
set;
}
}
2、在需要验证的webService类里面添加验证属性
3、在需要验证的Web方法上添加标签 [SoapHeader("Credentail")]
public class Login : System.Web.Services.WebService
{
public CredentialSoapHeader Credentail
{
get;
set;
}
[WebMethod]
[SoapHeader("Credentail")]
public string HelloWorld()
{
this.VerifyCredential(this);
return "Welcome " + this.Credentails.UserName;
}
/// <summary>
/// 验证是否合法
/// </summary>
/// <param name="s"></param>
private string VerifyCredential(Login s)
{
if (s.Credentails == null || s.Credentails.UserName == null || s.Credentails.UserPassword == null)
{
return "验证失败:无用户认证信息";
}
//在这里可以进一步进行自定义的用户验证
return "OK";
}
}
这样,在客户端代理实体调用该方法时,就需要提供一个CredentialSoapHeader 的对象了,在服务端的验证方法里,我们可以添加相应的身份验证机制。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?