高手指点.为什么参数名不一样调用就不成功

yeerh 2006-11-02 03:37:37
Web Service 中有如方法
[WebMethod(Description="名片用户 输入用户名,密码登录系统",EnableSession=true)]
public bool ValidateUser(string userName,string password)
{
if(userName=="admin"&&password=="admin")
return true;
return false;
}

代理类中使用如下方法可以成功调用:

[System.Web.Services.Protocols.SoapDocumentMethodAttribute(RequestNamespace = "http://callcard.zdit.cn/")]
public bool ValidateUser(string userName, string password)
{
object[] objs = new object[] { userName, password };
object[] results = this.Invoke("ValidateUser",objs);
return (bool)(results[0]);
}
但使用 把以上方法中的参数名改为基它名字, 就不能成功执行.
[System.Web.Services.Protocols.SoapDocumentMethodAttribute(RequestNamespace = "http://callcard.zdit.cn/")]
public bool ValidateUser(string name, string pwd)
{
object[] objs = new object[] { name, pwd};
object[] results = this.Invoke("ValidateUser",objs);
return (bool)(results[0]);
}

...全文
167 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanlong 2006-11-02
  • 打赏
  • 举报
回复
在xml找不到userName password
股神 2006-11-02
  • 打赏
  • 举报
回复
up
yeerh 2006-11-02
  • 打赏
  • 举报
回复
我使用
[System.Web.Services.Protocols.SoapDocumentMethodAttribute(
Action = "http://callcard.zdit.cn/ValidateUser",
RequestNamespace = "http://callcard.zdit.cn/",
RequestElementName = "ValidateUser",
ResponseElementName = "Login"
)]
public bool Login(string userName, string password)
{
object[] results = this.Invoke("Login", new object[] { userName, password });
return (bool)(results[0]);
}
这种方法来调用...
但执行后的结果又无法返回来..
yeerh 2006-11-02
  • 打赏
  • 举报
回复
即代理类中的方法名 和Service中的方法名不同...
应该如何写
yeerh 2006-11-02
  • 打赏
  • 举报
回复
要调用Web Service中的ValidateUser(string userName,string password)

又想在代理类中用
[........]
Login(string userName,string password )
{
.....
}
该如何写..
  • 打赏
  • 举报
回复
XML解析中,无法找到userName的节点。。
因为你传过去的是NAME,
userName节点值为null
lytone52 2006-11-02
  • 打赏
  • 举报
回复
正常啊,客户端发往服务段的soap消息中的userName和password节点没有赋值,因为代理类中定义的是name和pwd节点。所以匹配不起来,我觉得这个问题你多看看webservice基本概念就行了,sdk的文档里有。我觉得我的看法是基本对的
yeerh 2006-11-02
  • 打赏
  • 举报
回复
调用不成功的意思是..
可以执行到Web Service 定义的方法中去.
但参数就没有传过去了.

如.调用第二个ValidateUser:
ValidateUser("name","pwd");
到了Web Service中就成了执行ValidateUser(null,null)
lytone52 2006-11-02
  • 打赏
  • 举报
回复
也就是说,更改之后的代理类不符合原webservice的定义了。你调用时传递的soap消息中的name和pwd节点不符合原webservice定义。
lytone52 2006-11-02
  • 打赏
  • 举报
回复
如果改了则应该跟webserivce的wsdl对应不起来了,也就是不匹配了,所以调用失败,个人理解
deadshot123 2006-11-02
  • 打赏
  • 举报
回复
mark下

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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