Laden...
S
Benutzerbeschreibung

Forenbeiträge von SkySurfer Ingesamt 298 Beiträge

12.05.2009 - 11:05 Uhr

Hi,

ich schreibe gerade einem Tabellenlayout für das Compact Framework.
Da hier die Events der Controls sehr spärlich sind und manche nicht funktionieren hab ich ein paar Probleme:

Die TextBox und die PictureBox lösen kein Paint Event aus, da sie nativ laufen.
Auf der Suche wie ich an die Events kommen kann bin ich auf einen Artikel über
SubClassing im MSDN-Magazin gestoßen.

Dieser ist jedoch von 2004 und für CF 1.0.

Weiß jemand ob das auch im 2.0 bzw 3.5 noch so gemacht werden muss oder gibt es hier bessere Möglichkeiten an die Systemevents zu kommen ?

Gruß SkySurfer

21.04.2009 - 16:49 Uhr

Hi,

ich hab einen WebService mit C# erstellt. Dieser Webservice verwendet als Rückgabewerte eigenen Klassen.

Auf dem Client der mit dem Webservice kommuniziert habe ich die DLL die diese Klassen bereitstellt ebenfalls eingebunden. Wenn ich nun eine Web Referenz auf den Webservice erzeuge versucht der Wizzard aber jedes mal wieder die Datentypen nachzubauen anstatt die aus der DLL zu verwenden. Und ich bekomme einen Fehler.
Wenn ich die vom Wizzard erzeugten Typen lösche und ein Using auf meine DLL einfüge funktioniert es.

Bei WCF gibt es die Möglichkeit ein Attribut zu setzen [XmlSerializerFormat] um den Wizzard daran zu hindern. Gibt es eine solche Möglichkeit mit Webservices unter .NET 2.0 auch schon?

Gruß SkySurfer

20.03.2009 - 11:19 Uhr

Sorry ich glaub das kam falsch rüber.

Es geht mir nicht um den Namen den das Form hat, sondern um den ClassName den man sich zum Beispiel mit Spy++ anschauen kann wenn die Anwendung läuft und das Form geöffnet ist.

20.03.2009 - 11:03 Uhr

Hi,

kann ich irgendwie den ClassName eins Forms setzen wie das bei c++ geht?
Standardmässig wird hier ja "WindowsForms10....." gesetzt.

Gruß SkySurfer

02.03.2009 - 15:42 Uhr

Ah danke das macht viel mehr Sinn 😉

Jedoch hab ich noch das Problem, dass die DefaultCredentials leer sind.
Muss ich die in meinen Providern explizit setzen?

02.03.2009 - 15:04 Uhr

Der Link beschreibt : How to: Host a WCF Service in IIS

Mir ist nicht ganz klar wo da der zusammenhang ist zu nicht WCF Webservices.
Diese laufen doch soweiso im IIS ?
Oder hab ich das irgendwie falsch verstanden ?

02.03.2009 - 14:33 Uhr

Ja asmx Webservices aber ohne WCF da er auf .NET 2 basiert

02.03.2009 - 14:25 Uhr

Hallo,

ich hab eine Webanwednung bei der sich der Benutzer authentifizeren muss, Dafür verwende ich einen selbstgeschriebenen Role/Membership-Provider.
Die Webanwendung verwendet verschiedene Webservices die auf dem gleichen Server laufen und den selben Role/Membership-Provider verwenden.

Wie kann ich die Authentifizierung des Benutzers in der Webanwendung zur Authentifizierung an den Webservices verwenden?

Kann ich irgendwo die Credentials wieder auslesen?

Gruß SkySurfer

28.02.2009 - 13:23 Uhr

Weil ich das Projekt grad in der recent list hatte :

Hier Version 1.2 der DLL :

  • Textscrolling hinzugefügt
  • XML Kommentare
25.02.2009 - 15:24 Uhr

Hi,

ich möchste aus einem WebService herraus ein Logfile schreiben.
Im moment habe ich das Verzeichniss meines WebServices auf der Festplatte
hardcoded angegeben. Wie kann ich den Pfad des WebVerzeichnisses auslesen?

Gruß SkySurfer

25.02.2009 - 11:45 Uhr

verwendetes Datenbanksystem: SQL Compact 3.5

Hi,

ich hab in meiner Tabelle 3 Einträge einen Int und 2 NVarChar.
Nun möchte ich einen Filter machen, der alle Einträge filtert bei denem in einer der 3 Spalten der Suchwert vorkommt.

  1. Versuch:

bindingSource.Filter = " IntFeld LIKE '" + text "%' OR TextFeld1 LIKE '%" + text +"%' OR TextFeld2 LIKE '% " + text + "%'";

Hier gibt es die Meldung das Like nicht mit String und Int verwendet werden kann.

Versuch 2:


bindingSource.Filter = " CAST (IntFeld AS NVARCHAR) LIKE '" + text "%' OR TextFeld1 LIKE '%" + text +"%' OR TextFeld2 LIKE '% " + text + "%'";

Hier ist die CAST ein unbekanntes Schlüsselwort
Es scheint, als würde die Funktion keinen SQL Query auf die Daten anwenden, das beide Statements oben als Query funktionieren.

Gibt es noch andere Möglichkeiten?

Gruß SkySurfer

25.02.2009 - 10:12 Uhr

Danke lag an den Klammern

SCOPE_IDENTITY() gibt es auf dem Compact meines wissens nach leider nicht.

Gruß SkySurfer

25.02.2009 - 09:57 Uhr

verwendetes Datenbanksystem: SQL Compact Server 3.5

Hi,
ich möchte auf dem SQL Server ein Datensatz einfügen und wenn das Einfügen funktioniert hat den PK des Datensatzes als FK in einer anderen Tabelle eintragen.


INSERT INTO Tabelle1 (Anrede, Vorname, Name1) VALUES ('Herr', 'Hans', 'Hasenfuss');
UPDATE Tabelle2 SET (RefTabelle1 = @@IDENTITY) WHERE Id = 350076;

Das INSERT funktioniert jedoch das Update schlägt fehl:


(1 row(s) affected)
Major Error 0x80040E14, Minor Error 25501
> UPDATE Tabelle2 SET (RefTabelle1 = @@IDENTITY) WHERE Id = 350076
Fehler beim Analysieren der Abfrage. [ Token line number = 1,Token line offset = 29,Token in error = ( ]

Wenn ich ein SELECT @@IDENTITY nach dem INSERT mache bekomme ich aber den korrekten Wert.

Wo liegt mein Fehler ?

Gruß SkySurfer

22.02.2009 - 00:17 Uhr

Es hat zwar ertwas länger gedauert aber nun hab ich alle Fehler beseitigt:

  • : ; vertauscht
  • ForeColor , BackColor werden übernommen
  • wird im VS 2008 Designer immer gezeichnet

Hier die DLL in Version 1.1

Gruß SkySurfer

20.02.2009 - 10:23 Uhr

verwendetes Datenbanksystem: SQL2008

Hi,

ich verwende in einem Projekt das Microsoft Sync Framework.
Zu Erstellung von SyncAdaptern liefert dies den SyncAdpaterBuilder mit.
Hier kann man auch FilterClause eingeben (WHERE-Bedingungen).

Problem:

Ich benötige für meinen Filter zum Teil mehrere JOINS um die entsprechenden Abhängigkeiten zu erfüllen. Wenn ich die im FilterClause angebe ([TabelleA].[Feld1] = [TabelleB].[Feld3] ) bekomme ich ein Fehler, das der Builder im Select die Tabellen nicht an alle abzufragenden Felder voranstellt.

Nun muss ich die SyncAdapter für viele Tabellen erstellen und hab eigentlich keine Lust für jeden Adapter 150 Zeilen an SqlCommands zu schreiben.

Microsoft hat die Funktionalität in der internal Klasse DBSyncAdapterBuilder gekapselt, so das man die entsprechenden Methoden nicht durch ein override ändern kann..

Gibt es eine andere Möglichkeit das zu lösen ohne einen neuen SyncAdapterBuilder zu bauen... oder sich über Reflector die Sourcen zu besorgen und die zu ändern?

Gruß SkySurfer

13.02.2009 - 14:39 Uhr

Sollte er, der Benutzer ist in der Gruppe db_owner

13.02.2009 - 12:21 Uhr

Hallo,

ich hab einen Webservice erstellt, der auf meinem IIS läuft.
Datenbank wird mit Benutzer und Kennwort geöffnet.
Der Webservice funktioniert und hat Zugriff auf den SQL 2000 Server.

Wenn ich mich nun zum debuggen mit VS 2005 mit der W3WP.EXE anhänge
bekomme ich die folgende Exception :

Die EXECUTE-Berechtigung wurde für das sp_sdidebug-Objekt, master-Datenbank, Besitzer 'dbo' verweigert.

Woran kann das liegen?

Gruß SkySurfer

13.02.2009 - 10:14 Uhr

Hab die Werte von EXEC in einen temporäre Tabelle geschrieben und von dort weiter verwendet. So gings dann .. ist warscheinlich auch nicht optimal in Hinsicht auf die Performance aber vermutlich noch scheller als mit der Schleifen Variante.


CREATE TABLE #temp (retrun1 varchar(50),  return2...)
SELECT @var1 = return1 , @var2 = return2, ... FROM #temp

Gruß SkySurfer

13.02.2009 - 08:36 Uhr

Danke für deinen Ansatz Xynratron

Die Daten sind die Gruppen eines Benutzers der auf meinen Webservice zugreifen darf, und da ein Benutzer in mehreren Gruppen sein kann und die Gruppen-Benutzerzuordnung von aussen kommt muss ich die irgendwie in die Abfrage bekommen. Ein OR würde aber bei einer variablen Anzahl an Gruppen nicht funktionieren denke ich ?

Ja hab ich auch rausgefunden 😉 Aber wie bekomme ich die Variablen die ich in exec fülle wieder aus exec raus ?

12.02.2009 - 17:16 Uhr

Die Frage ist ja wie ran kommen ..

ich wollte das nicht fest verdrahten... ala:


 if(Context.User.IsInRole("A")) groups.Add("A")
 if(Context.User.IsInRole("B")) groups.Add("B")

12.02.2009 - 16:21 Uhr

Ein Benutzer kann verschiedene Rollen besitzen, und abhängig von Rollen muss der Service entscheiden welche Daten er dem Benutzer zurückliefern darf und welche nicht.

Das Array könnte man für eine SQL Abfrage verwenden also sinngemäß

SELECT FeldA FROM TabelleB WHERE Rechte IN (rollenarray)

12.02.2009 - 16:17 Uhr

@juetho: Danke für den Hinweis, leider ist das für mich nicht praktikabel, da das SQL Statement in einer StoredProcedure steckt und MS SQL 2000 noch keinen .NET Code erlaubt.

@xxxprod
Danke es funktioniert...

Hab jedoch noch ein Problem
in meinem Statement mache ich eine Variablenzuweisung (@valueA = FeldA) die ich später verwende. Wenn ich das per EXEC ausführe bekomme ich die Meldung:

"Die Variable '@valueA' muss deklariert werden."

Wie kann ich das umgehen, um die Variable danach noch verwenden zu können?

12.02.2009 - 13:55 Uhr

verwendetes Datenbanksystem: MS SQL 2000

Hi,

ich hab eine StoredProcedure die mir eine Liste filtern soll.
Diesen Filter möchte ich über IN (list) machen,
Kann ich irgendwie diese Liste als Parameter der Stored Procedure übergeben?

Im Prinzip also so etwa :


CREATE PROCEDURE pr_filterList
  @filter varchar(150)
AS
BEGIN
  SELECT FeldA, FeldB FROM TabelleXY WHERE FeldC IN(@filter)
END

Das funktioniert für einen Aufruf mit einm Filtereintrag


EXEC pr_filterList
  @filter = 'Expr1'

Wie müsste ich das für mehrere Einträge machen ?

Gruß SkySurfer

12.02.2009 - 13:40 Uhr

Hast du dir beide Übertragungen mal mit WireShark oder einem TrafficAnalyser deiner Wahl angeschaut ob beides mal exakt das Gleiche übers Netz geh?

12.02.2009 - 13:36 Uhr

Dann musst du auf dem Server ein Programm haben das du mit deinem dazu bringst den Stream zu erzeugen und an YouTube zu senden. Sprich Client Server Architektur.

12.02.2009 - 10:21 Uhr

Hallo,

ich hab einen WebService den ich über einen eigenen Basic Authentication Provider gesichert hab.

Im Webservice möchte ich einige Funktionen abhänging von der Rolle auf Daten zugreifen lassen.

Gibt es noch eine andere Möglichkeit an die Rollen des akutellen Benutzers zu kommen ausser über Context.User.IsInRole("ABC") ?
Es wäre Praktischer das ganze Array an Rollen zu haben. Komm ich da irgendwo ran?

Gruß SkySurfer

11.02.2009 - 15:59 Uhr

@Jelly: Das mit dem Designer ist komisch ...

hab deine Solution geöffnet und er hat es richtig angezeigt.

Hab das Problem mit der ForeColor entdeckt...
Er übernimmt die Farbänderung nur innerhalb des Designer in der Applikation setzt er aber wieder die Standardfarbe. Werde es fixen.

11.02.2009 - 14:03 Uhr

ich habs jetzt so gelöst :


DECLARE @statement
SET @statement = "SELECT " + @result + "FROM Tabellexy WHERE bla bla"
EXEC (@statement)

oder geht das auch schöner ?

11.02.2009 - 12:11 Uhr

verwendetes Datenbanksystem: MS SQL 2000

Hallo,

ich hab ein Statement, welches mir Feldnamen also varchar liefert


@result = 'feld1, feld2, feld3'

kann ich das irgendwie direkt in einer weiteren Abfrage verwenden?
Also so irgendwie:


SELECT @result FROM TabelleXY WHERE bla bla

MfG
SkySurfer

11.02.2009 - 10:25 Uhr

@Jelly
Ich hab das ganze jetzt mal in VS 2008 geöffnet. Das Control auf eine Form gezogen und es wurde richtig angezeigt. Hab über die Properties auch mal die ForeColor geändert und die Änderung wurde angezeigt.

Kannst du mir vielleicht dein Code schicken, dass ich schaun kann was schiefgegangen ist?

10.02.2009 - 16:12 Uhr

@Blogscreen:

matrixDisplay.Text verwendet deine Systemeinstellung für Zeilenumbrüche um diese zu finden.

Auf einem deutschen Windows System würde es so gehen :


matrixDisplay.Text = "Text mit\r\nZeilenumbruch";

alternativ kannst du auch ein string[] an matrixDisplay.Lines geben


matrixDisplay.Lines = new string[] { "Text mit", "Zeilenumbruch" };

; und : hab ich vertauscht

Bin am WE nicht dazu gekommen VS 2008 zu installieren um die Probleme von Jelly nachzuvollziehen, da es unter VS 2005 keine Probleme mit der Darstellung im DesignMode gibt.

Ich hoffe ich schaff es bis Freitag, dann stell ich die korrigierte Version rein.

05.02.2009 - 11:34 Uhr

@Jelly ich werds am Wochenende mal mit VS2008 versuchen und schaun was man da machen kann.

@Blockscreen danke für den Hinweis werds mir anschaun und beheben

03.02.2009 - 14:27 Uhr

@lord_fritte : du hast standardmässig nur ascii zeichen ich hab mal angefangen den erweterten ascii code noch zu machen aber das ist noch nicht fertig..
solltest du andere zeichen benötigen musst du eine eigene matrix font machen.

@jelly hast du es in vs2005 oder 2008 gemacht?
ich konnts in 2005 nicht ganz nachvollziehen.. im 2008 hab ichs noch nicht probiert.
hast du mir vielleicht ein beispiel code bei dem es auftritt?
dann schau ichs mir an und schau was man machen kann..

Gruß SkySurfer

12.01.2009 - 14:16 Uhr

Hallo,

ich hab ein in VS 2005 ein Projekt für CF2.0 erstellt und möchte nun ein WebVerweis hinzufügen.
Der WebService ist mit ASP.NET 2.0 erstellt worden und liegt auf einem Server mit Basic Authentication.

Wenn ich die Seite des Service aufrufe und mich anmelde bekomme ich die Ansicht des Webservice wie gewohnt doch rechts steht :

Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "EnvDTE.IVsExtensibility" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{3C536122-57B1-46DE-AB34-ACC524140093}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).

Woran kann das liegen?

MfG
SkySurfer

23.12.2008 - 10:53 Uhr

Um den Filter noch vor dem verarbeiten des RequestStreams setzen zu können muss ich das Event PreRequestHandlerExecute sein, da hier der Request Content noch auf dem Stream liegt.

Ich hab die ICSharpZipLib als Debug eingebunden und einen Breakpoint auf die Read Methode des GZIP Streams gesetzt. Der Haltepunkt wird erreicht, wenn ich die Daten mittels StreamReader vom Stream lese, jedoch nicht wenn ich diese Stelle wieder auskommentiere und nur den Filter setze. So wie es aussieht wird der Filter nicht verwendet um den Requeststream zu verarbeiten.

Woran kann das liegen ?

MfG
SkySurfer

22.12.2008 - 11:09 Uhr

Leider bekomme ich auch mit ReleaseRequestState den Fehler 400.


 void context_setFilter(object sender, EventArgs e)
        {
            HttpApplication app = (HttpApplication)sender;
            string re = app.Request.Headers.Get("Request-Encoding");

            if (string.IsNullOrEmpty(re))
            {
                return;
            }
            

            //StreamReader sr = new StreamReader(new GZipInputStream(app.Request.InputStream));
            //string stream = sr.ReadToEnd();
            //File.WriteAllText("request.log", stream);          


            if(re == "gzip")
            {
                app.Request.Filter  = new GZipInputStream(app.Request.Filter);
            }
        }

Das ist mein Code zum Filter setzen... da kann eigentlich nicht viel schief gehen..

und das Entpacken funktioniert auch.

22.12.2008 - 10:43 Uhr

Hi,

ich hab eine Klasse von IHttpModule abgeleitet, welche den auf den Requeststream anhand von Headerinformationen einen Filter anwendet. Der Filter wird beim Event PreRequestHandlerExecute gesetzt.

Jedoch endet es immer mit der Meldung 400 - Bad Request.

Ich hab zum testen den Filter im EventHandler auf den RequestStream angewendet und in eine Datei geschrieben und die Verarbeitung des Streams ist richtig.

Gibt es eine Möglichkeit bei debuggen genauer zu sehen wo es letztendlich zum Prolem kommt ?

MfG
SkySurfer

19.12.2008 - 11:24 Uhr

Habs gelöst.

Eine Klasse von Stream abgeleitet und in der Write Methode wird gepackt und das gepackte auf den requestStream geschrieben, den ich im Konstruktor übergeben hab.

Thx für eure Mühe

19.12.2008 - 10:06 Uhr

Das Problem ist die Methode müsste expliziert aufgerufen werden. Ich habe aber nur die Möglichekeit es im Pass-Through zu machen, das die Methode nur einmal aufgerufen wird bevor die Daten auf dem Stream liegen.

19.12.2008 - 09:06 Uhr

Das habe ich schon untersucht: alles was an dieser Stelle in den Stream geschrieben wird, sind nur noch Nutzdaten. Header Informationen usw werden vorher gesendet und kommen auch noch im Klartext an.

Mir ist bewusst, dass ich für die Gegenstelle einen Filter schreiben muss, welcher solche Anfragen erst wieder dekoprimiert.

Jedoch muss ich die komprimierten Daten ersteinmal auf den Stream bekommen um den Filter testen zu können.

18.12.2008 - 22:09 Uhr

Hab ich garnicht gesehen das auf den Thread noch eine antwort kam aber danke Svenson.

Doch der Blog beschäftigt sich nur mit dem komprimieren der Antwort und hier tritt das Problem nicht in der Form auf, da hier die Parameter und Rückgabe der GZIP Klasse geschickter sind und der gepackte Stream als antwort zurück gegeben werden kann.

18.12.2008 - 16:29 Uhr

Als das ganze mal etwas Abstrakter :

Ich hab wie oben beschreiben eine Klasse von WebRequest abgeleitet.
Ziel der Klasse: Da ich sehr große XML Daten über den Request versende will ich diese aus Geschwindigkeitsgründen diese XML Daten mit GZIP packen.

WebRequest liefert einen Stream zurück in den nur geschrieben werden kann. Die Daten aus diesem Stream werden dann versendet.

Da Microsoft aber hier überall internal verwendet hat kann ich nicht direkt darauf zugreifen und muss über den umweg, dass ich mir intern ein WebRequest Objekt halte und dessen requestStream verwenden.

Nun muss ich den Stream den ich von meiner Klasse nach aussen geb mit GZIP packen und den gepackten Stream den ich von der GZIP Klasse bekomme in den Stream übertragen den ich von meinem intern gehaltenen WebRequest habe.

Ich hoffe jetzt is es klarer worauf ich hinaus will

Gruß SkySurfer

18.12.2008 - 10:01 Uhr

Da wenn ich den compressedStream dem requestStream zuweise der

ConnectionStream den ich vom request erhalte mit einem DefleateStream ersetzt wird und nichts im requestStream ankommt

17.12.2008 - 19:05 Uhr

Weil die gepackten Daten mit dem Request gesendet werden sollen

17.12.2008 - 18:30 Uhr

Ich weiß ja noch ob ich hier n Denkfehler hab :

ich hole mir den Stream in den ich den die gepackten Daten reinschreiben will mit


Stream compressedStream = request.GetRequestStream(); /ist write only

das was in den Stream geschrieben werden soll muss gepackt werden. In diesem Fall mit der SharpZipLib.


Stream gepackterStream =  new GZipOutputStream(zupackenderStream);

Dafür brauch ich einen zupackendenStream den ich als return nach außen liefern kann dass das zu packende reingeschrieben werden kann.

Mein Versuch war mit einem MemoryStream


MemoryStream zupackenderStream = new MemoryStream();

diesen kann ich ohne Probleme packen und auch zurückliefern.

Mein Problem dabei ist jetzt jedoch, dass GZipOutputstream einen neuen Stream erzeugt.

Wie bekomme ich diesen nun in den geholten compressedStream?

17.12.2008 - 10:51 Uhr

Hab es mal versucht ..
das Komprimieren geht..
jedoch hab ich ein Problem mit der Rückgabe des komprimierten Streams in den erhaltenen ConnectStream. In C++ würde ich hier einfach den komprimierten Stream der Referenz des ConnectStreams zuweisen oder den einen Stream in den anderen streamen (stream 1 << stream 2) gibt es so eine Möglichkeit auch in C# ?

16.12.2008 - 16:01 Uhr

Hallo,

ich möchte den RequestStream einer eigenen WebRequest Klasse mit der SharpZipLib komprimieren.

Die Methode von WebRequest von der ich ableiten muss sieht so aus :


 public System.IO.Stream GetRequestStream()

Ich muss also einen Stream zurückgeben, welcher den Request entgegen nimmt.

SharpZipLib erwarzet den zu packenden Stream als Parameter.
So dass es vom Prinzip so aussehen müsste :


        public override System.IO.Stream GetRequestStream()
        {
            Stream compressedStream = request.GetRequestStream();

            Stream uncompressedStream = new Stream();
            compressedStream = new GZipOutputStream(uncompressedStream);

            return uncompressedStream;

        }

  1. Würde das überhaupt gehen?
  2. Wie könnte ich den Stream erzeugen, da ich das Format des Streams nicht kenne

Mfg SkySurfer

15.12.2008 - 09:17 Uhr

Hallo,

ich habe eine Klasse die von WebRequest abgeleitet ist und und meine Anfragen komprimiert übertragen soll.

Ich registriere die Klasse :


WebRequest.RegisterPrefix("http", new CompressedHTTPWebRequestCreate());

Wenn ich jedoch nun einen über WSDL.exe gewrappten WebService ansprechen will, welcher letzte endlich auch mit WebRequest arbeitet, wird meine Klasse aber nicht aufgerufen.

Woran kann das liegen?

Gruß SkySurfer

31.10.2008 - 14:36 Uhr

Hab die selbe Klasse in CF und FW übersetzen lassen und der IL Code ist identisch sollte denk ich keine Probleme machen, zumal in der Klasse nur Strings validiert werden und nichts Grafisches erledigt wird.

31.10.2008 - 14:11 Uhr

Hätte man den doppelten Aufwand bei der Pflege, so würde nur auf die eine DLL referenziert.