Laden...

Wenn ich Klasse im Service einbinden möchte ist diese nicht erreichbar

Erstellt von icolor vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.182 Views
I
icolor Themenstarter:in
115 Beiträge seit 2008
vor 6 Jahren
Wenn ich Klasse im Service einbinden möchte ist diese nicht erreichbar

Moin Leute,

ich habe eine Klasse myService.asmx.cs in welcher ich Webmethoden aufrufe. Zu dieser Klasse soll eigentlich eine weitere Klasse SQLBuilder.cs gehören, in der ich die SQL´s zusammenbaue.


namespace myPortal.App_Code
{
    public class SQLBuilder
    {
        public void prepareSql()
        {
            theSql = string.Empty;
            theJoin = string.Empty;
            theSqlWhere = "WHERE ";
            theSqlOrder = string.Empty;
            string theSqlGroup = string.Empty;
        }
        .....
     }
}

Wenn ich nun im Service die Klasse einbinden möchte, erhalte ich Meldungen wie> Fehlermeldung:

Der Typ- oder Namespacename 'App_Code' ist im Namespace 'myPortal' nicht vorhanden. (Fehlt ein Assemblyverweis?)

Versuche ich direkt zuzugreifen, bekomme ich ein > Fehlermeldung:

Der Name 'prepareSQL' ist im aktuellen Kontext nicht vorhanden

Was mache ich hier falsch?

2.298 Beiträge seit 2010
vor 6 Jahren

Lässt sich schwer sagen ohne weitere Informationen über dein Projekt zu haben. Insofern ist nun die Frage, hast du die Datei korrekt in deinem Projekt? Wie sieht deine Projektstruktur aus?

Sind eventuell Fehler in der Klasse oder in der Service-Klasse vorhanden die das korrekte Einlesen behindern?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

I
icolor Themenstarter:in
115 Beiträge seit 2008
vor 6 Jahren

Das Projekt ist eine ASP.NET Webanwendung auf Basis C# und JavaScript. Aus dem JavaScript heraus rufe ich die WebMethoden in der Service Klasse auf.

Um das Schreiben der SQL´s zu vereinfachen habe ich mir halt eine Hilfsklasse bauen wollen.

Diese Klasse ist korrekt unter App_Code im Projekt eingebunden und lässt sich fehlerfrei kompilieren.

Ansonsten ist die Klasse aufgebaut wie unten im Code angezeigt.

2.298 Beiträge seit 2010
vor 6 Jahren

Wie sieht denn deine Service.asmx.cs aus? - Poste am besten mal die Methode, in der du auf die Klasse SQLBuilder zugreifst.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

I
icolor Themenstarter:in
115 Beiträge seit 2008
vor 6 Jahren

namespace myPortal
{
    [WebService(Namespace = "//localhost")]
    //[WebService(Namespace = "http://microsoft.com/webservices/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    
    // Wenn der Aufruf dieses Webdiensts aus einem Skript zulässig sein soll, heben Sie mithilfe von          ASP.NET AJAX die Kommentarmarkierung für die folgende Zeile auf. 
    [System.Web.Script.Services.ScriptService]

    public class myService : System.Web.Services.WebService
    {
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public object loadCountAllUser(int userArt)
        {
            SqlConnection con = new SqlConnection(GetConnection());
            try
            {
                con.Open();
                var art = string.Empty;
                var dataH = new object[] { };
                var list = new List<object>();
                dataH = new object[] { "Count" };
                list.Add(dataH);

                prepareSql();

                theSql = "SELECT DISTINCT BESTELLUNGEN.BNO AS NO,             
                     BESTELLUNGEN.KOMMISSION AS KO " +
                    "FROM BESTELLUNGEN ";

                addJoin("LEFT", "KISTEN", "BNO");

                addWhere("LEN(KISTEN.BNO) > 0");
          
            }
        }
    }
}

Ich habe es über


SQLBuilder sb = new SQLBuilder();

oder

SQLBuilder.prepareSQL();

versucht

2.298 Beiträge seit 2010
vor 6 Jahren

Hast du ein Using für "myPortal.App_Code" drin? Ansonsten müsste der Aufruf eher wie folgt aussehen:


myPortal.App_Code.SQLBuilder = new myPortal.App_Code.SQLBuilder();

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

I
icolor Themenstarter:in
115 Beiträge seit 2008
vor 6 Jahren

Habe ich beides auch schon ausprobiert. Immer mit dem selben Ergebnis.

Interessanterweise meckert er dann das der Namespace App_Code nicht bekannt sei.

16.807 Beiträge seit 2008
vor 6 Jahren

Warum benutzt Du überhaupt noch solche Services und nicht wie vorgesehen die WebAPI Schnittstelle von ASP.NET?
ASMX ist bereits obsolete und wird so auch in den neueren Versionen nicht mehr unterstützt.

I
icolor Themenstarter:in
115 Beiträge seit 2008
vor 6 Jahren

Ganz einfach,
weil wir nur Visual Studio 2012 einsetzen.

16.807 Beiträge seit 2008
vor 6 Jahren

Die Argumentation macht jetzt nicht sooo viel sinn aber auch unter 2012 gab es schon die Möglichkeit mit der WebAPI (damals noch Version 2.2) zu arbeiten.

I
icolor Themenstarter:in
115 Beiträge seit 2008
vor 6 Jahren

Naja, ich baue aber dafür jetzt nicht wieder alles um.

2.298 Beiträge seit 2010
vor 6 Jahren

Hallo,

gehe in die Eigenschaften deiner "SQLBuilder.cs" und setze BuildVorgang auf kompilieren.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

I
icolor Themenstarter:in
115 Beiträge seit 2008
vor 6 Jahren

Shit, Super, das wars. Danke