请教soapheader的问题

[复制链接]
查看11 | 回复5 | 2021-1-27 06:19:48 | 显示全部楼层 |阅读模式
我用dotnet做webserice的client端,需要象服务器端那边发送soapheader进行用户验证,具体是怎么发送的?谢谢!!!!!!!
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:19:48 | 显示全部楼层
重写header类,增加username和password属性就行了
回复

使用道具 举报

千问 | 2021-1-27 06:19:48 | 显示全部楼层
我已经构件了一个soaphead类,现在就卡在怎么把这个类对象通过service发出去?生成的代理类里也找不到办法
回复

使用道具 举报

千问 | 2021-1-27 06:19:48 | 显示全部楼层
哎.自己顶了
回复

使用道具 举报

千问 | 2021-1-27 06:19:48 | 显示全部楼层
而且怎么在soapheader类里增加命名空间信息
回复

使用道具 举报

千问 | 2021-1-27 06:19:48 | 显示全部楼层
1.新建专案及加入Web服务WebServiceA
2.在WebServiceA.cs中加入新的publicclassMySOAPHeader
-----------------------------------------------------
publicclassMySOAPHeader:System.Web.Services.Protocols.SoapHeader
{
publicstringUserPWD;
publicstringUserName;
publicboolIsValidUser()
{
stringstrUserName=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile("userName","md5");
stringstrUserPWD=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile("userPWD","md5");
if((UserName==strUserName)&&(UserPWD==strUserPWD))
{
returntrue;
}
else
{
returnfalse;
}
}
}
3.修改WebServiceA的HelloWorld()添加SoapHeader
----------------------------------------------
///
///WebServiceA的摘要说明
///
[WebService(Namespace="http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
publicclassWebServiceA:System.Web.Services.WebService{
publicWebServiceA()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
publicMySOAPHeaderuserSOAPHeader;
[WebMethod,SoapHeader("userSOAPHeader")]
publicstringHelloWorld()
{
if(userSOAPHeader.IsValidUser())
{
return"HelloWorld";
}
else
{
return"Sorry";
}
}
}

4.加入Web引用及新建测试页面
5.测试页面的按钮事件
-------------------
protectedvoidButton1_Click(objectsender,EventArgse)
{
//
stringstrUserName=this.txt_UserName.Text.Trim();
strUserName=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strUserName,"md5");
stringstrUserPWD=this.txt_UserPWD.Text.Trim();
strUserPWD=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strUserPWD,"md5");
//
localhost.WebServiceAwsA=newlocalhost.WebServiceA();
//
localhost.MySOAPHeaderuserSOAPHeader=newlocalhost.MySOAPHeader();
userSOAPHeader.UserName=strUserName;
userSOAPHeader.UserPWD=strUserPWD;
//
wsA.MySOAPHeaderValue=userSOAPHeader;
stringstrReturn=wsA.HelloWorld();
//
this.TextBox1.Text=strReturn;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行