Asp.net 我的web服务返回一个结构,后台代码如何知道它是什么?
为了避免web服务无法传递复杂对象(如字典和树)的问题,我在类中创建了一个带有几个值字段的小结构。然而,web服务在解决方案中处于一个单独的项目中,我不确定调用web服务函数的后台代码如何知道结构是什么。我应该将结构复制到后台代码文件中吗?我可以进口吗 下面是一个小例子:Asp.net 我的web服务返回一个结构,后台代码如何知道它是什么?,asp.net,web-services,Asp.net,Web Services,为了避免web服务无法传递复杂对象(如字典和树)的问题,我在类中创建了一个带有几个值字段的小结构。然而,web服务在解决方案中处于一个单独的项目中,我不确定调用web服务函数的后台代码如何知道结构是什么。我应该将结构复制到后台代码文件中吗?我可以进口吗 下面是一个小例子: namespace mYWebService{ [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProf
namespace mYWebService{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class Service1 : System.Web.Services.WebService
{
struct TreeData
{
private readonly string text;
private readonly string parent;
private string val;
public TreeData (string Text, string Parent)
{
this.text = Text;
this.parent = Parent;
this.val = "";
}
public TreeData (string Text, string Parent, string Value)
{
this.text = Text;
this.parent = Parent;
this.val = Value;
}
public string Text { get { return text; } }
public string Parent { get { return parent; } }
public string Value { get { return val; } }
}
[WebMethod]`
public TreeData getTree(){
TreeData myTree = new TreeData("1","2","3");
return myTree;
}}
在客户机代码中生成绑定时,将自动创建所有必要的复杂数据类型,因为它们在服务的元数据中进行了描述。但是,如果不需要使用老式的.NET 2.0 web服务(即
WebService
类),您应该使用现在的版本。您将很难编译此版本,因为您将在公共方法中公开私有结构。至少,结构必须公开。我还建议您将结构放在类之外,因为内部类/structs/etc是一种不好的做法(这是我个人的观点,但是您没有看到它们在.net framework中被大量使用,这表明Microsoft也不太喜欢它们)
请记住,web服务本质上是分布式的,因此您不必直接依赖对类的引用。这是一个SOAP服务(我认为),框架将公开服务的元数据。VisualStudio可以使用此元数据自动生成代理客户端,该客户端可用于调用服务
以下是设置代理的简单方法: