在一个asmx Web服务中排除了许多类

时间:2010-10-28 07:05:08

标签: c# web-services

它可能在Web Service C#中的单个asmx中暴露许多类,这用于生成 一个Proxy类,并从客户端使用代理,如:Proxy.UserService.User和Proxy.ImageService.GetImage 我试试这个但是不行。

namespace ServiciosWeb
{
   [WebService(Namespace = "http://tempuri.org/")]
   [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
   [System.ComponentModel.ToolboxItem(false)]
   public class Services : System.Web.Services.WebService
   {
   }

   public class ImageService : Services.IService
   {
      [WebMethod]
      public string GetImage()
      {
        return "Image";
      }
   }

  public class UserService : Services.IService
  {
    [WebMethod]
    public string User()
    {
        return "User";
    }
  }
}

3 个答案:

答案 0 :(得分:4)

经典的ASMX Web服务是一个需要从System.Web.Services.WebService派生并使用[WebService]属性修饰的类。如果要公开多个服务,则可能需要具有多个ASMX文件。另一种可能性是简单地将两个Web方法放在现有服务类中,这样当您在客户端上生成代理类时,它们将是可见的。

答案 1 :(得分:3)

[WebService][WebMethod]无法做到这一点。

答案 2 :(得分:1)

你不能将多个类绑定到单个asmx,但是你可以做什么 - 如果你想提供大量的类文件 - 使用相同的类名,比如partial class。需要检查每个类是否需要从IService派生,但我已经在项目中完成了它并且它有效。

namespace ServiciosWeb 
    { 
       [WebService(Namespace = "http://tempuri.org/")] 
       [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
       [System.ComponentModel.ToolboxItem(false)] 
       public partial class Services : System.Web.Services.WebService 
       { 
       } 


   public partial class Services : Services.IService 
   { 
      [WebMethod] 
      public string GetImage() 
      { 
        return "Image"; 
      } 
   } 

  public partial class Services : Services.IService 
  { 
    [WebMethod] 
    public string User() 
    { 
        return "User"; 
    } 
  } 
}