积极答复者
web service HelloWorldRequest

问题
-
我在本机中有个http://localhost/Service1.asmx服务,其中代码如下
C# code
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
namespace WebService1
{
/// <summary>
/// Service1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
我在另外一个网站添加服务引用,命名为name1.
随后我在cs文件中输入name1,提示却变成了
HelloWorldRequest
HelloWorldRequestBody
HelloWorldResponse
HelloWorldResponseBody
WebServiceSoap
WebServiceSoapChannel
WebServiceSoapClient
而我引用别人的web service时,却不会有这几个:
HelloWorldRequest
HelloWorldRequestBody
HelloWorldResponse
HelloWorldResponseBody
只有:
WebServiceSoap
WebServiceSoapChannel
WebServiceSoapClient
,不知道是如何设置的。
经过我的测试发现如果把
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
改成:
[WebMethod]
public bool HelloWorld()
{
return true;
}
也就是改个类型就没有上面的情况了,不知道什么原因2010年8月3日 10:07
答案
-
HelloWorldRequest
HelloWorldRequestBody
HelloWorldResponse
HelloWorldResponseBody不论这些客户端的类型是如何定义的,
Web服务的客户端 本质上都是在构建一个SOAP消息,带Body的类型应该属于SOAP 消息体里的数据。HelloWorldRequest我猜测应该是整个消息,会引用HelloWorldRequestBody。
不管返回的类型是基本数据类型比如字符串、Int。还是你的自定义的可序列化的数据,这些数据都是放在SOAP消息体里的。
你可以在尝试定义一个可序列化的类型,比如
[Serializable]
class User
{
public string userName;
public int age;
}
Frank Xu Lei--谦卑若愚,好学若饥
专注于.NET平台下分布式应用系统开发和企业应用系统集成
Focus on Distributed Applications Development and EAI based on .NET
【老徐的网站】:http://www.frankxulei.com/
【老徐的博客】:http://www.cnblogs.com/frank_xl/
- 已建议为答案 ThankfulHeart 2010年8月10日 1:53
- 已标记为答案 Min-Hong Tang - MSFT 2010年8月17日 1:33
2010年8月9日 14:22
全部回复
-
HelloWorldRequest
HelloWorldRequestBody
HelloWorldResponse
HelloWorldResponseBody不论这些客户端的类型是如何定义的,
Web服务的客户端 本质上都是在构建一个SOAP消息,带Body的类型应该属于SOAP 消息体里的数据。HelloWorldRequest我猜测应该是整个消息,会引用HelloWorldRequestBody。
不管返回的类型是基本数据类型比如字符串、Int。还是你的自定义的可序列化的数据,这些数据都是放在SOAP消息体里的。
你可以在尝试定义一个可序列化的类型,比如
[Serializable]
class User
{
public string userName;
public int age;
}
Frank Xu Lei--谦卑若愚,好学若饥
专注于.NET平台下分布式应用系统开发和企业应用系统集成
Focus on Distributed Applications Development and EAI based on .NET
【老徐的网站】:http://www.frankxulei.com/
【老徐的博客】:http://www.cnblogs.com/frank_xl/
- 已建议为答案 ThankfulHeart 2010年8月10日 1:53
- 已标记为答案 Min-Hong Tang - MSFT 2010年8月17日 1:33
2010年8月9日 14:22