Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [ASP.NET] WebServices e SoapException

    Ciao ho la necessita di serializzare gli errori che mi puo' sfornare una Serie di WebServices da me realizzati.
    Ho seguito Passo Passo la guida MSDN a riguardo e sono arrivato alla creazione di una classe per la gestione delle SOAP Exception in questo modo :

    codice:
    Imports System
    Imports System.Web.Services
    Imports System.Web.Services.Protocols
    Imports System.Xml.Serialization
    Imports System.Xml
    
    Public Class clsThrowSoapException
        Inherits WebService
    
        Public Sub myThrow()
            'Dettaglio di Default dell' elemento SOAP
            Dim doc As New System.Xml.XmlDocument
            Dim node As System.Xml.XmlNode = doc.CreateNode(XmlNodeType.Element, _
            SoapException.DetailElementName.Name, _
            SoapException.DetailElementName.Namespace)
            'Dettaglio dell' errore
            Dim details As System.Xml.XmlNode = doc.CreateNode(XmlNodeType.Element, _
            "mySpecialInfo1", "http://www.globuscosmos.com/")
            Dim details2 As System.Xml.XmlNode = doc.CreateNode(XmlNodeType.Element, _
            "mySpecialInfo2", "http://www.globuscosmos.com/")
            Dim attr As XmlAttribute = doc.CreateAttribute("t", "attrName", "http://www.globuscosmos.com/")
            'Inseriamo i child nel node
            node.AppendChild(details)
            node.AppendChild(details2)
            'Eccezione
            Dim se As New SoapException("An Error Occured", _
            SoapException.ClientFaultCode, _
            Context.Request.Url.AbsolutePath, _
            node)
            Throw se
            Return
        End Sub
    End Class
    A questo punto all' interno di un WebServices implemento un blocco Try Catch, dove l' eccezione sarà una SoapException di questo tipo

    codice:
    ... ...
    Try
    'Esegue Something
    Catch ex as SoapException
    'cosa metto?

    Mi sa che ho sbagliato qualcosa perchè io non voglio intercettare le SoapException ma bensi' trasformare qualsiasi errore mi generi il webSerivces in una SoapException.

    Qualcuno puo' aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Un WS può soltanto generare SoapException in quanto dev'essere interoperabile anche da altre piattaforme e quindi non può utilizzare eccezioni tipizzate di .NET

    Per questo come spiegato dove hai letto in MSDN tu devi sempre fare un catch di SoapException e avrai eventuali informazioni aggiuntive all'interno di details.
    A questo punto dove catturi l'eccezione puoi leggere la proprietà Detail dell'eccezione che ti restituisce il nodo xml che puoi navigare per recuperare tutte le informazioni.
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  3. #3
    Ok ci sono ma come faccio a creare nel mio blocco catch del webservices un nodo con l' errore in modo tale che l' azienda che sfrutterà il mio webservices potrà leggere l' errore generato via SOAP (questa è la loro esigenza)

    Una cosa del genere?

    codice:
            Dim se As New SoapException("An Error Occured", _
            SoapException.ClientFaultCode, _
            Context.Request.Url.AbsolutePath, _
            node)
            Throw se
    Grazie.

  4. #4
    Credo intendi una cosa di questo tipo:

    codice:
                'Provo a caricare i dati
                Try
                    tbl = .returnAccessTable(strQry)
                    If Not tbl Is Nothing Then
                        Return tbl.DataSet
                    End If
                    .Dispose()
                Catch ex As SoapException
                    'Dettaglio di Default dell' elemento SOAP
                    Dim doc As New System.Xml.XmlDocument
                    Dim node As System.Xml.XmlNode = doc.CreateNode(XmlNodeType.Element, _
                    ex.DetailElementName.Name, _
                    ex.DetailElementName.Namespace)
                    'Dettaglio dell' errore
                    Dim details As System.Xml.XmlNode = doc.CreateNode(XmlNodeType.Element, _
                    "mySpecialInfo1", "http://www.globuscosmos.com/")
                    Dim details2 As System.Xml.XmlNode = doc.CreateNode(XmlNodeType.Element, _
                    "mySpecialInfo2", "http://www.globuscosmos.com/")
                    Dim attr As XmlAttribute = doc.CreateAttribute("t", "attrName", "http://www.globuscosmos.com/")
                    'Inseriamo i child nel node
                    node.AppendChild(details)
                    node.AppendChild(details2)
                    'Eccezione
                    Dim se As New SoapException("An Error Occured", _
                    SoapException.ClientFaultCode, _
                    Context.Request.Url.AbsolutePath, _
                    node)
                    Throw se
                End Try

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.