我有一个带有C#的ASMX Web服务。在这个WebService中,我使用了一些带有属性的类。 Class与Service1.asmx在同一名称空间中。
我的网络服务代码:
namespace NewWebService
{
[WebService(Namespace = "http://www.MySite.net/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string GetUsers(string authenticatedToken) //out string error
{
//Extract from database the users...
return Serialize(usersList);
}
...
}
}
我的班级代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace NewWebService
{
public class Users
{
public int ID { get; set; }
public string Name { get; set; }
...
}
}
问题是:我必须在课程中查看我可以在添加了webservice的项目中查看它。
答案 0 :(得分:3)
您将返回string
:
public string GetUsers(string authenticatedToken)
因此,Web服务的公共定义仅公开有关string
的信息。公共界面中没有任何关于您的课程的信息,因此网络服务不会宣传您班级的任何信息。
返回类的强类型实例。像这样:
public IEnumerable<User> GetUsers(string authenticatedToken)
然后生成的Web服务代码将包含要返回的类型的定义,因此使用客户端将能够理解该类型。 (例如,如果使用客户端包含代码生成功能,则生成该类型的本地模拟。从汇编角度来看,它不是相同的类型,而是跨越服务边界真的是一个问题。)