2011-10-29 78 views
1

如何将我的Web应用程序中的类“BL_Customer”的类对象'obj'传递给我的Webservice(ASMX)中的函数'Insert()',然后访问该类的属性在Webservice中的对象?我通过'添加WebReference'工具包含了我的远程web服务。我已经包括'使用WebRererence';'命名空间也。任何帮助将不胜感激。将类对象传递给WebService

这是我BL_Customer类业务层:

public class BL_Customer 
{ 
    public BL_Customer() 
    { 

    } 
    string c_Cust_Name = string.Empty;  
    string c_Mobile_no = string.Empty;  
    public string Cust_Name 
    { 
     get { return c_Cust_Name; } 
     set { c_Cust_Name = value; } 
    } 
    public string Mobile_no 
    { 
     get { return c_Mobile_no; } 
     set { c_Mobile_no = value; } 
    } 

} 

这是我的数据访问层:

public class DAL_Customer 
{ 
    public SqlConnection con = new SqlConnection(); 
    WebReference.Service objWEB = new WebReference.Service(); //objWEB -> Webservice object 
    Connection c = new Connection(); 
    public DAL_Customer() 
    { 
    } 
    public int Customer_Insert(BL_Customer obj) 
    { 
     --------- 
     --------- 
     return objWEB.Insert(obj); // Insert() is a function in my remote webservice 
    } 
} 

这是我的web服务:

public class Service : System.Web.Services.WebService 
{ 
    public Service() { 
    } 

    [WebMethod] 
    public string insert(**What should be here?**) 
    { 
     ----- 
     ----- 

    } 
} 

问候, 大卫

+0

ASMX web服务或WCF? – Damith

+0

@UnhandledException asmx –

回答

4

根据您用于构建Web服务的技术,可能有不同的方法来实现此目的。如果您使用的是过时现在ASMX Web服务,你想补充一点,将作为参数,你需要的类中的方法:

[WebMethod] 
public void DoSomething(Person p) 
{ 
    ... 
} 

如果您正在使用WCF这是建议的技术在.NET来构建Web服务您将设计服务合同:

[ServiceContract] 
public interface IMyService 
{ 
    void DoSomething(Person p); 
} 

在这两种情况下,以消耗你会生成客户端上的强类型的代理服务。建议再次推荐使用Visual Studio中的“添加服务引用”对话框,以通过将其指向Web服务的WSDL来生成强类型代理。然后你会调用的方法:

using (var client = new MyServiceClient()) 
{ 
    Person p = new Person 
    { 
     FirstName = "john", 
     LastName = "smith" 
    }; 
    client.DoSomething(p); 
} 

而且如果你的客户是建立在pre-.NET 3.0则需要使用添加Web引用对话框在Visual Studio中生成客户端代理。

+0

我正在使用ASMX。 'TextBox3.Text = Convert.ToString(obj.Multiply(Convert.ToDouble(TextBox1.Text),Convert.ToDouble(TextBox2.Text)));'。 ** Multiply **是我的web服务中的一个功能。现在我想要将一个类对象传递给Multiply函数 –

+0

@DavidJohn,那么您必须先修改Multiply Web服务方法,以便它将所需的对象作为参数,而不是它当前所做的两个双精度值。完成此操作后,必须重新生成客户端代理,以便反映新方法签名,并且可以使用它。 –

+0

@DavidJohn更改您的Web服务将方法Multiply接受到类并更新Web服务引用。那么你可以解析新类的对象到你的web服务方法 – Damith

0

如果您在Web服务中定义了“Bill”类,那么您将能够在Web应用程序和Web服务中使用它。 我不确定是否有一种方法可以使用Web服务应用程序中定义的类,但我认为不是。

+0

@DavidJohn你的实体应该与你的层级分开存在。被传递的对象需要从每一层引用,因此所有的层都将依赖于实体类库。 – rie819