【问题标题】:Access a method in a proxy class (using webservice in Visual Studio, C#)访问代理类中的方法(使用 Visual Studio、C# 中的 Web 服务)
【发布时间】:2014-06-22 15:20:02
【问题描述】:

我正在尝试在 Visual Studio 中构建一个 Web 服务客户端并使用 #C 访问一个 Web 服务,但是我在使用从 Web 服务创建的代理类时遇到了一些问题。

我正在尝试访问代理类中的方法并在网页上显示该方法返回的值。

这是我试图访问的类和方法是 RaceDaySimple[] raceDay:

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18408")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="java:se.atg.aisbean.calendar")]
public partial class RaceDayCalendarSimple : object, System.ComponentModel.INotifyPropertyChanged {

    private RaceDaySimple[] raceDayField;

    private AtgDateTime timestampField;

    /// <remarks/>
    [System.Xml.Serialization.XmlArrayAttribute(IsNullable=true, Order=0)]
    /*Access this method ==>*/public RaceDaySimple[] raceDay {
        get {
            return this.raceDayField;
        }
        set {
            this.raceDayField = value;
            this.RaisePropertyChanged("raceDay");
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(IsNullable=true, Order=1)]
    public AtgDateTime timestamp {
        get {
            return this.timestampField;
        }
        set {
            this.timestampField = value;
            this.RaisePropertyChanged("timestamp");
        }
    }

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged(string propertyName) {
        System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
        if ((propertyChanged != null)) {
            propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
        }
    }
}

在 WebForm1.aspx.cs 我有这个内容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebServiceClient
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            InformationServiceReference.PartnerInfoServicePortClient pbs = new InformationServiceReference.PartnerInfoServicePortClient();
            pbs.ClientCredentials.UserName.UserName = "SomeUsername";
            pbs.ClientCredentials.UserName.Password = "SomePassword";

            test.InnerHtml = Convert.ToString(pbs.fetchRaceDayCalendarSimple().raceDay);

        }
    }
}

这个方法将返回一个比赛日,我试图在 WebForm1.aspx 上显示它。首先我尝试了:

test.InnerHtml = pbs.fetchRaceDayCalendarSimple().raceDay;

然后是“pbs.fetchRaceDayCalendarSimple().raceDay;”有下划线,所以我知道出了点问题。将鼠标悬停在它上面时,我收到错误消息:

Cannot implicitly convert 'WebServiceClient.InformationServiceReference.RaceDaySimple[]' to 'String'

所以我想我应该这样做:

test.InnerHtml = Convert.ToString(pbs.fetchRaceDayCalendarSimple().raceDay);

所以“test”是WebForm1.aspx页面上的div id:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <h1>Test:</h1>
                <div id="test" runat="server"></div>
            </div>
        </form>
    </body>
</html>

那么在加载 WebForm1.aspx 时,会显示如下内容:

测试:
WebServiceClient.InformationServiceReference.RaceDaySimple[]

只显示方法的名称,但我希望方法显示方法的作用,即显示比赛日。那我该怎么做呢?

【问题讨论】:

    标签: c# web-services visual-studio proxy-classes


    【解决方案1】:

    错误是说您得到的是 RaceDaySimple 的列表,而不是一个项目。所以尝试使用列表中的第一项

    test.InnerHtml = pbs.fetchRaceDayCalendarSimple().FirstOrDefault().raceDay;
    

    【讨论】:

    • 好的,但现在我收到错误消息:“WebServiceClient.InformationServiceReference.RaceDayCalendarSimple”不包含“FirstOrDefault”的定义,并且没有扩展方法“FirstOrDefault”接受“WebServiceClient.InformationServiceReference”类型的第一个参数.RaceDayCalendarSimple' 可以找到(您是否缺少 using 指令或程序集引用?)
    • 尝试使用 System.Linq 添加;到文件的顶部。另一种选择是将 .FirstOrDefault() 更改为 [0]
    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2013-10-25
    相关资源
    最近更新 更多