【问题标题】:How to view my classes from asmx web service如何从 asmx Web 服务查看我的课程
【发布时间】:2014-01-17 12:17:15
【问题描述】:

我有一个带有 C# 的 ASMX Web 服务。在这个 WebService 中,我使用了一些具有属性的类。该类与 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; }
        ...
    }
}

问题是:我必须用我的班级做什么才能在我添加 web 服务的项目中查看它。

【问题讨论】:

  • 您是否有理由不返回 User 类的集合而不是字符串?
  • ASMX 是一项遗留技术,不应用于新开发。 WCF 或 ASP.NET Web API 应该用于 Web 服务客户端和服务器的所有新开发。一个提示:Microsoft 已停用 MSDN 上的 ASMX Forum
  • 我将列表序列化为字符串,然后在用户列表中反序列化。
  • 为什么要这样做?只需返回List<User>
  • @wertyk:当您从另一个项目添加服务引用时,该服务引用生成的代码包括该服务公开的类型的类型定义。 (请注意,这些是 DTO 类型,它们不包含复杂的功能。)

标签: c# web-services asmx


【解决方案1】:

您返回的是string

public string GetUsers(string authenticatedToken)

因此,Web 服务的公共定义只会公开有关 string 的信息。公共接口中没有关于您的班级的任何内容,因此 Web 服务不会公布有关您班级的任何信息。

返回类的强类型实例。像这样的:

public IEnumerable<User> GetUsers(string authenticatedToken)

然后生成的 Web 服务代码将包含返回类型的定义,因此消费客户端将能够理解该类型。 (例如,如果消费客户端包含代码生成功能,则生成该类型的本地模拟。从程序集的角度来看,它不会是 相同的类型,而是跨越服务边界,应该真的不用担心。)

【讨论】:

  • 解决方案:@David:当您从另一个项目添加服务引用时,该服务引用生成的代码包括该服务公开的类型的类型定义。 (请注意,这些是 DTO 类型,它们不包含复杂的功能。)
  • 请务必更新服务引用,因为 Visual Studios 生成的代码不一定会在简单的重建中更新。
猜你喜欢
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 2014-02-12
相关资源
最近更新 更多