WebService SoapHeader 无法接收到验证信息

梅子 2016-04-28 01:14:51

public class SMSSoapHeader : SoapHeader
{
private string strUserName = string.Empty;
private string strPassWord = string.Empty;

public SMSSoapHeader()
{
//
//TODO: 在此处添加构造函数逻辑
//
}

public SMSSoapHeader(string strUserName, string strPassWord)
{
this.strUserName = strUserName;
this.strPassWord = strPassWord;
}

#region 构造 用户名|密码
/// <summary>
/// 用户名
/// </summary>
public string UserName
{
get { return strUserName; }
set { strUserName = value; }
}
/// <summary>
/// 密码
/// </summary>
public string PassWord
{
get { return strPassWord; }
set { strPassWord = value; }
}
#endregion

#region 检测是否正确登录
/// <summary>
/// 检测是否正确登录
/// </summary>
/// <returns></returns>
public bool CheckLogin()
{
if(strUserName == "11" && strPassWord == "11")
{
return true;
}
else
{
return false;
}
}

#endregion
}



====================


public class SMSService : System.Web.Services.WebService {
public SMSSoapHeader myHeader = new SMSSoapHeader();

public SMSService () {
}

[SoapHeader("myHeader")]
[WebMethod(Description="余额查询")]
public string MoneyQuery()
{
//判断用户合法性
string strCheckLogin = CheckLogin();
if (strCheckLogin != "0")
{
return strCheckLogin;
}

IDictionary<string, string> strParameter = new Dictionary<string, string>();
strParameter.Add("username", apiSMSUser);
strParameter.Add("password", apiSMSPwd);
string result = getReturnData(apiSMSMoneyUrl, strParameter);
return result;
}
#region 判断用户是否合法
public string CheckLogin()
{
try
{
if (myHeader.CheckLogin())
{
return "0";
}
else
{
return "无效的身份验证,请重试!";
}
}
catch (Exception ex)
{
return "程序发生错误,请重新验证身份。错误信息:" + ex.Message;
}
}
#endregion
}



==========

public partial class _Default : System.Web.UI.Page
{
private string apiSMSUser = ConfigurationManager.AppSettings["SMSAccount"].ToString().Trim(); //账号
private string apiSMSPwd = ConfigurationManager.AppSettings["SMSPwd"].ToString().Trim(); //密码
private localhost.SMSService sms = null;

protected void Page_Load(object sender, EventArgs e)
{
sms = new localhost.SMSService();
//身份验证
localhost.SMSSoapHeader smsHeader = new localhost.SMSSoapHeader
{
UserName = apiSMSUser,
PassWord = apiSMSPwd
};
sms.SMSSoapHeaderValue = smsHeader;
}
protected void Button1_Click(object sender, EventArgs e)
{
string result = sms.MoneyQuery();
this.lblResult.Text = result;
}
}


以上Webservice的请求,返回到SMSService.MoneyQuery的时候SMSSoapHeader 总是为空,好像是被new了一下。但是我不知道具体问题到底出在哪?求大神指点
...全文
263 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
梅子 2016-06-21
  • 打赏
  • 举报
回复
我也不知道怎么解决的,代码重新贴一下就好了
serf 2016-05-11
  • 打赏
  • 举报
回复
是不是要在servicecontract标注sessionmode,否则会重建的。类似于JAVAEE,是无状态的。
梅子 2016-05-10
  • 打赏
  • 举报
回复
难道是让我无满意结贴么?

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧