Web服务将对象作为参数

时间:2014-08-19 13:24:50

标签: .net vb.net linq web-services wcf

基本上,

我有一个客户端控制台,使用我定义的一个名为" Part"的类。该类保存在共享库中。

    <Serializable()> _
    Public Class Part() 
       Public Property Success As Boolean = False
       Public Property ExportID As Integer = 0
    end class

我还有一个web服务(或者我已经尝试了两种WCF),它有一个方法,它采用了一个&#34; Part&#34;对象作为参数。也取自共享库。

    objService.AddPart(objPart)

但是,当我尝试在客户端调用此方法时,它会犯错并告诉我,SharedClass.Part类型的对象无法转换为WebSerivce.Part?

    <WebMethod()>
    Public Function AddPart(Byval objPart as Part) As Boolean

    End Function

我99%确定我已经错过了一步,但对于我的生活,我无法解决这个问题。上面的代码是为了说明目的而编写的,所以可能是错误的。

1 个答案:

答案 0 :(得分:1)

如果是WCF,请确保使用“DataContract”装饰“Part”类。它是具有“DataMember”属性的属性。对于Web服务,我认为您不需要做任何额外的事情。

这是一个示例Web服务,

using System.Web.Services;

namespace WebServiceWithJson
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class SayHelloService 
    {
        [WebMethod]
        public string GreetingsWithObj(SayHelloDto ObjSayHelloDto)
        {
            return ObjSayHelloDto.Greeting + " " + ObjSayHelloDto.Name;
        }
    }
    public class SayHelloDto
    {
        public string Greeting { get; set; }
        public string Name { get; set; }
    }
}

添加引用,这就是你可以使用的方式,

using System;
using SayHelloSvcConsumer.SayHelloServiceReference;
namespace SayHelloSvcConsumer
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var ObjSayHelloService = new SayHelloServiceSoapClient();
            var ObjSayHelloDto = new SayHelloDto
                {
                    Greeting = "Hello",
                    Name = "Rasmita"
                };
            var GreetingMsg = ObjSayHelloService.GreetingsWithObj(ObjSayHelloDto);
            Response.Write(GreetingMsg);
        }
    }
}

如果您可以发布任何服务的示例代码,那会更好。 希望它会有所帮助