菜鸟刚学WebService,请各位指教,多谢了现在已经有了客户端,我要写Server
这是客户端发送过来的header:
<AuthHeader xmlns="http://api.baidu.com/sem/common/v2">
<username>username</username>
<password>password</password>
<token>token</token>
<target>target</target>
</AuthHeader>然后我在服务端的代码是这样的: public AuthHeader thisIsHeader;
public Service()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
} [SoapHeader("thisIsHeader", Direction = SoapHeaderDirection.InOut)]
[WebMethod(Description = "1", EnableSession = true)]
public XmlDocument CampaignService()
{
//
if (thisIsHeader.username == "username")
{
//Do something here
}
}而AuthHeader的定义是这样的:public class AuthHeader : SoapHeader
{
private string usernameField;
private string passwordField;
private string tokenField;
private string targetField; /// <res/>
public string username
{
get
{
return this.usernameField;
}
set
{
this.usernameField = value;
}
} /// <res/>
public string password
{
get
{
return this.passwordField;
}
set
{
this.passwordField = value;
}
} /// <res/>
public string token
{
get
{
return this.tokenField;
}
set
{
this.tokenField = value;
}
} /// <res/>
public string target
{
get
{
return this.targetField;
}
set
{
this.targetField = value;
}
}
}
定义显得繁了点,但是应该不重要。
现在客户端在调用的时候,出现了这样的错误:System.NullReferenceException: 未将对象引用设置到对象的实例。
我验证过,此时thisIsHeader为null,但是我看到的例子中,都是这样使用的,请问这是什么原因呢?谢谢各位了
这是客户端发送过来的header:
<AuthHeader xmlns="http://api.baidu.com/sem/common/v2">
<username>username</username>
<password>password</password>
<token>token</token>
<target>target</target>
</AuthHeader>然后我在服务端的代码是这样的: public AuthHeader thisIsHeader;
public Service()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
} [SoapHeader("thisIsHeader", Direction = SoapHeaderDirection.InOut)]
[WebMethod(Description = "1", EnableSession = true)]
public XmlDocument CampaignService()
{
//
if (thisIsHeader.username == "username")
{
//Do something here
}
}而AuthHeader的定义是这样的:public class AuthHeader : SoapHeader
{
private string usernameField;
private string passwordField;
private string tokenField;
private string targetField; /// <res/>
public string username
{
get
{
return this.usernameField;
}
set
{
this.usernameField = value;
}
} /// <res/>
public string password
{
get
{
return this.passwordField;
}
set
{
this.passwordField = value;
}
} /// <res/>
public string token
{
get
{
return this.tokenField;
}
set
{
this.tokenField = value;
}
} /// <res/>
public string target
{
get
{
return this.targetField;
}
set
{
this.targetField = value;
}
}
}
定义显得繁了点,但是应该不重要。
现在客户端在调用的时候,出现了这样的错误:System.NullReferenceException: 未将对象引用设置到对象的实例。
我验证过,此时thisIsHeader为null,但是我看到的例子中,都是这样使用的,请问这是什么原因呢?谢谢各位了
解决方案 »
- C#中从DataGridView中筛选数据的问题
- 简单计算器 只要实现数字间的运算就行
- 求解 GDI
- TreeView ,一点小问题
- ArrayList的移除问题
- 《beginning c# objects从概念到代码(中文版)》
- datagrid的问题
- 流媒体问题:在IE中直接输入路径可以播放,嵌入网页播放不了,路径完全正确.
- 急!!!请指教,使用Visual Studio <项目>编写出来的 Web 服务, 移到别的IIS 机器上就运行不起来??
- 初学编程,在类那章,那么多要记忆条条框框看着都头大???不知道谁那里有好的教材,在这方面讲得明白又透彻.
- 获取系统登陆名
- RICHTEXT如何解决换行问题?
//.net3.5生成的客户端代理的调用:
using (var client = new WebSvc.Service1SoapClient())
{
var header = new WebSvc.MyHeader();
header.MyValue = "hello server";
client.HelloWorld(ref header);
}//.net2.0生成的客户端代理的调用:
using (var client2 = new WebSvc2.Service1())
{
var header = new WebSvc2.MyHeader();
header.MyValue = "hello server";
client2.MyHeaderValue = header;
var str = client2.HelloWorld();
}
客户端的定义是一样的
public class AuthHeader : SoapHeader
{ private string usernameField; private string passwordField; private string tokenField; private string targetField; /// <res/>
public string username
{
get
{
return this.usernameField;
}
set
{
this.usernameField = value;
}
} /// <res/>
public string password
{
get
{
return this.passwordField;
}
set
{
this.passwordField = value;
}
} /// <res/>
public string token
{
get
{
return this.tokenField;
}
set
{
this.tokenField = value;
}
} /// <res/>
public string target
{
get
{
return this.targetField;
}
set
{
this.targetField = value;
}
}
public AuthHeader(string s1, string s2, string s3, string s4)
{
username = s1;
password = s2;
token = s3;
target = s4;
} public AuthHeader()
{ }
}
如果调用你的Client Proxy就用你的类好了,何必自己定义呢。
Service是协议的定义者,别整反了。一个客户端定义一个,服务端别玩了