【问题标题】:Passing Entity on ASP.NET Web Service在 ASP.NET Web 服务上传递实体
【发布时间】:2009-10-24 16:50:16
【问题描述】:

这可能很容易,但我在这里尝试做的是,我试图将客户对象传递给 Web 服务方法。 Customer 类在 Entity 命名空间上,它是可序列化的,我正在添加对调用 Web 服务并传递 Entity.Customer 对象的 ASP.NET 应用程序以及接受 Enity.Customer 对象的 WebService 的引用。

网络服务方法

[WebMethod]
public void AddCustomer(Entity.Customer c)
{}

ASP.NET 应用程序

Entity.Customer c = new Entity.Customer;
webservice.AddCustomer(c);

错误

'TestApplication.localhost.Service1.AddCustomer(TestApplication.localhost.Customer)' 的最佳重载方法匹配有一些无效参数

我尝试更改 Web 服务以接受对象,然后将该对象转换为 Customer.Entity,应用程序编译但我收到 XML 生成错误。

【问题讨论】:

  • 您可以按 F12 转到生成的 AddCustomer 方法的定义并在此处粘贴声明吗?

标签: c# asp.net web-services


【解决方案1】:

您是否使用 Visual Studio 中的“添加 Web 引用”方法生成 Web 服务方法?

这是一个编译问题,对吧?您的应用程序不想编译?只需转到方法的定义,并确保您传递的客户对象与方法定义中指定的相同 - 通常生成的 Web 服务方法会生成该对象的代理版本,您需要传递完全相同的类。

【讨论】:

  • 感谢您的回复。那正是我正在做的。我后来想通了。
【解决方案2】:

通常,通过服务方法生成的辅助方法需要本地生成的对象 - 这是因为服务器端对象的某些元素未序列化,或者由于序列化而处理略有不同。

试试:

TestApplication.localhost.Customer c = new TestApplication.localhost.Customer();
webservice.AddCustomer(c);

这样您就可以使用具有正确序列化属性的生成对象,而不是原始对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2021-05-07
    相关资源
    最近更新 更多