如何在aspx

我需要一些指针来理解如何从背后的aspx代码中转换返回的asmx类。我创建了一个原型asmx和aspx页面来测试此功能,这些功能一旦成功运行,便希望扩展到我正在从事的项目。

尽管我在后面的asmx和aspx vb代码中使用了相同的类定义,但是Visual Studio注意到转换不兼容错误“ 错误BC30311类型'websvc_returnvalues'的值无法转换为'WebServiceConsume.websvc_returnvalues '”。在Visual Studio中,aspx.vb中的以下行表示此错误:

rtnvals = websvc.test()

我尝试执行简单的类型转换,但是它具有相同类型的错误:无法将类型为'websvctest.websvc_returnvalues'的对象转换为类型为'websvc_returnvalues' ...所以显然我在不了解如何在两个类之间进行转换。

Private Function cvt_websvc_returnvalues(i As Object) As websvc_returnvalues
    Return CType(i,websvc_returnvalues)
End Function

预先感谢我可以尝试的任何建议! Stackoverflow是回答软件问题的主要来源!

网络服务:

在我的项目中,我将以下Web服务引用为 websvctest

Imports system.web
Imports system.web.Services
Imports system.web.Services.Protocols

' To allow this Web Service to be called from script,using ASP.NET AJAX,uncomment the following line.
' <system.web.Script.Services.scriptservice()> _
<WebService(Namespace:="http://sample.org/")>
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class WebServiceTest
    Inherits system.web.Services.WebService

    <Serializable()>
    Public Class websvc_returnvalues
        Public w_brtn As Boolean
        Public w_rtnval As String
        Public w_rtnerr As String
        Sub New()
            w_brtn = False
            w_rtnval = ""
            w_rtnerr = ""
        End Sub
        Public Property Ok As Boolean
            Get
                Return w_brtn
            End Get
            Set(value As Boolean)
                w_brtn = value
            End Set
        End Property

        Public Property value As String
            Get
                Return w_rtnval
            End Get
            Set(value As String)
                w_rtnval = value
            End Set
        End Property

        Public Property err As String
            Get
                Return w_rtnerr
            End Get
            Set(value As String)
                w_rtnerr = value
            End Set
        End Property
    End Class

    Public Sub New()

    End Sub

    <WebMethod()>
    Public Function test() As websvc_returnvalues
        Dim b As Boolean = False
        Dim rtn As websvc_returnvalues = New websvc_returnvalues
        Try
            b = True

        Catch ex As Exception
            rtn.err = ex.Message
        End Try

        rtn.Ok = b
        Return rtn
    End Function

End Class

WebServiceConsume.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="WebServiceTestConsume.aspx.vb" Inherits="WebServiceConsume" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Test</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <label for="websvc_ok">ok</label><asp:Literal ID="websvc_ok" runat="server"></asp:Literal><br />
            <label for="websvc_value">value</label><asp:Literal ID="websvc_value" runat="server"></asp:Literal><br />
            <label for="websvc_err">err</label><asp:Literal ID="websvc_err" runat="server"></asp:Literal>
        </div>
    </form>
</body>
</html>

WebServiceconsume.aspx.vb

请注意,此处的 websvc_returnvalues 的类定义与asmx中的

相同
Partial Class WebServiceConsume
    Inherits system.web.UI.Page

    Private websvc As New websvctest.WebServiceTest

    Public Class websvc_returnvalues
        Public w_brtn As Boolean
        Public w_rtnval As String
        Public w_rtnerr As String
        Sub New()
            w_brtn = False
            w_rtnval = ""
            w_rtnerr = ""
        End Sub
        Public Property Ok As Boolean
            Get
                Return w_brtn
            End Get
            Set(value As Boolean)
                w_brtn = value
            End Set
        End Property

        Public Property value As String
            Get
                Return w_rtnval
            End Get
            Set(value As String)
                w_rtnval = value
            End Set
        End Property

        Public Property err As String
            Get
                Return w_rtnerr
            End Get
            Set(value As String)
                w_rtnerr = value
            End Set
        End Property
    End Class
    Private Sub form1_Load(sender As Object,e As EventArgs) Handles form1.Load
        Dim rtnvals As websvc_returnvalues
        Try
            rtnvals = websvc.test() ' visual studio error
            rtnvals = cvt_websvc_returnvalues(websvc.test()) ' runtime error

            Me.websvc_ok.Text = rtnvals.Ok.ToString
        simp    Me.websvc_value.Text = rtnvals.value.ToString
            Me.websvc_err.Text = rtnvals.err.ToString
        Catch ex As Exception
            MsgBox(ex.Message,MsgBoxStyle.Critical,"Testing")
        End Try

    End Sub

    Private Function cvt_websvc_returnvalues(i As Object) As websvc_returnvalues
        Return CType(i,websvc_returnvalues)
    End Function

End Class
zn0282 回答:如何在aspx

Do!我可以回答我自己的问题...

我只需要针对websvc_returnvalues类输入正确的名称空间:

将rtnvals设为websvctest.websvc_returnvalues

本文链接:https://www.f2er.com/2683785.html

大家都在问