58 messaggi dal 08 novembre 2007
Salve a tutti,
ho il seguente problema quando vado a creare un web service se creo la pagina nel seguente modo

Pagina service.asmx con code behind interno... funziona tutto correttamente
<%@ WebService Language="C#" Class="imagining" %>
using System;
using System.Web.Services;

[WebService(Namespace = "http://10.0.0.10/soap_server/webserviceeuroconvertitore/")]
public class imagining :
WebService
{

    //  

    [WebMethod(Description = "Convertitore da lire in Euro")]
    public double ConvertiEuro(int Lire)
    {
        return (Lire / 1936.127);
    }
    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }

    [WebMethod]
    public double Convertitore(double variabile, int modalita)
    {

        double risultato;
        if (modalita == 1)
        {

            risultato = variabile / 1936.27;
        }
        else
        {
            risultato = variabile * 1936.27;
        }

        return risultato;
    }

    [WebMethod]
    public int[] Tabellina(int x)
    {

        int[] risultato = new int[11];
        for (int i = 1; i <= 10; i++)
        {
            risultato[i] = x * i;
        }
        return risultato;
    }

}


mentre se metto il code behind separato in un altra pagina mi va in errore

pagina service.asmx
<%@ WebService Language="C#" CodeBehind="imagining.asmx.cs" Class="imagining" %>


pagina imagining.cs
using System;
using System.Web.Services;

[WebService(Namespace = "http:/77.43.10.49/soap_server/webserviceeuroconvertitore/")]
public class imagining :
WebService
{

    //  

    [WebMethod(Description = "Convertitore da lire in Euro")]
    public double ConvertiEuro(int Lire)
    {
        return (Lire / 1936.127);
    }
    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }

    [WebMethod]
    public double Convertitore(double variabile, int modalita)
    {

        double risultato;
        if (modalita == 1)
        {

            risultato = variabile / 1936.27;
        }
        else
        {
            risultato = variabile * 1936.27;
        }

        return risultato;
    }

    [WebMethod]
    public int[] Tabellina(int x)
    {

        int[] risultato = new int[11];
        for (int i = 1; i <= 10; i++)
        {
            risultato[i] = x * i;
        }
        return risultato;
    }

}

Questo è l'errore
Parser Error Message: Could not create type 'imagining'.

Su questa linea

Line 1:  <%@ WebService Language="C#" CodeBehind="imagining.asmx.cs" Class="imagining" %>

 



Qualcuno mi può aiutare grazie a tutti!
Modificato da mavrick il 15 settembre 2008 13.13 -
Prova a dargli un namespace sostituire il valore dell'attributo class con il nome della classe completo di namespace.

Ciauz

imperugo
Microsoft MVP
myblog : http://www.tostring.it
58 messaggi dal 08 novembre 2007
già fatto mi da lo stesso errore
30 messaggi dal 12 aprile 2006
Potresti mettere le funzione in una classe "non legata" a nessun asmx. Facendo così puoi richiamare all'interno del codice lato server dei 2 web-service gli stessi metodi senza chiamrli due volte. L'unica menata è che dovrai istanziare l'oggetto oppure dichiarare i metodi "Shared".
L'errore dipende dall'attributo Class. Il tipo non viene trovato perchè la classe "imagining", così come è scritta, non esiste. Occorre specificare il full-qualified-name per il tipo: "namespace1.namespace2.imagining". Verifica tra le proprietà di progetto quale è il namespace di default settato e specificalo nel valore oppure setta un namespace per la classe ed esplicita quello.

Attenzione: quando parlo di namespace, non intendo il namespace XML, ma il namespace C#.

namespace MyNamespace
{
  public class MyClass
  {
  }
}

<%@ WebService Language="C#" CodeBehind="MyClass.asmx.cs" Class="MyNamespace.MyClass" %>

Ciao, Ricky.
Modificato da rickyvr il 22 settembre 2008 15.14 -

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
2 messaggi dal 02 novembre 2006
Ciao...scusami per la domanda da neofita: mi potresti spiegare il contenuto tra le parentesi quadre presenti nel tuo listato?
___________________________________________________
using System;
using System.Web.Services;

[WebService(Namespace = "http:/77.43.10.49/soap_server/webserviceeuroconvertitore/")]
public class imagining :
WebService
{

//

[WebMethod(Description = "Convertitore da lire in Euro")]
public double ConvertiEuro(int Lire)
{
return (Lire / 1936.127);
}
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
__________________________________________________________

Scusami se ti rispondo con una domanda, ma ho estremo bisogno di questa risposta. Se vuoi puoi rispondermi anche tramite email: dpinfo@email.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.