Laden...
P
Pedro_15 myCSharp.de - Member
In der Nähe von Berlin Dabei seit 27.10.2005 375 Beiträge
Benutzerbeschreibung

Forenbeiträge von Pedro_15 Ingesamt 375 Beiträge

20.02.2017 - 17:51 Uhr

Ok, wollte es jetzt doch mal mit den Messages probieren und gleich auf Newton
umstellen.

Anleitung:
https://blogs.msdn.microsoft.com/carlosfigueira/2011/05/02/wcf-extensibility-message-formatters/

Leider bekomme ich das nicht in der web.config konfiguriert.

<extensions>
      <behaviorExtensions>
        <add name="newtonsoftJsonBehavior" type="Newtonsoft.Json.Extensions.NewtonsoftJsonBehaviorExtension, NewtonsoftJsonExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      </behaviorExtensions>
    </extensions>
    <behaviors>
      <endpointBehaviors>
        <behavior name="endpointBehavior">
          <webHttp automaticFormatSelectionEnabled="true" helpEnabled="true" />
        </behavior>
        <behavior name="jsonRestEndpointBehavior">
          <webHttp/>
          <newtonsoftJsonBehavior/>
        </behavior>
      </endpointBehaviors>

Bekomme ich die Meldung:> Fehlermeldung:

Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
Warnung Das Element 'behavior' hat ein ungültiges untergeordnetes Element 'newtonsoftJsonBehavior'. Erwartet wurde die Liste der möglichen Elemente: 'clientVia, callbackDebug, callbackTimeouts, clear, clientCredentials, transactedBatching, dataContractSerializer, dispatcherSynchronization, remove, synchronousReceive, webHttp, enableWebScript, endpointDiscovery, soapProcessing'.

Wenn ich meinen Code probiere ohne den Service auf den neuen endpointBehavior umzuleiten bekomme ich schon einen Fehler.> Fehlermeldung:

HTTP/1.1 500 System.ServiceModel.ServiceActivationException

Hat jemand vielleicht schon mal das ganze in einer web.config eingebunden.

20.02.2017 - 11:44 Uhr

Danke, aber wenn ich das denn bloß verstehen würde mit den Messages...

20.02.2017 - 11:16 Uhr

Konstruktur na klar. Danke für den Tipp.


 [Serializable]
    public class SimpleDictionary : ISerializable
    {
        private Dictionary<string, object> _Dictionary;

        public SimpleDictionary()
        {
            _Dictionary = new Dictionary<string, object>();
        }
        public SimpleDictionary(SerializationInfo info, StreamingContext context)
        {
            _Dictionary = new Dictionary<string, object>();
             foreach (var entry in info)
            {
                _Dictionary.Add(entry.Name, entry.Value);
            }
        }
        public object this[string key]
        {
            get { return _Dictionary[key]; }
            set { _Dictionary[key] = value; }
        }
        public void Add(string key, object value)
        {
            _Dictionary.Add(key, value);
        }

        public Dictionary<string, object>.Enumerator GetEnumerator()
        {
            return _Dictionary.GetEnumerator();
        }

        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            _Dictionary.ToList().ForEach(p => info.AddValue(p.Key.ToString(), p.Value));
        }
    }

.

20.02.2017 - 10:35 Uhr

Danke!

Mit dem Beispiel klappt die Rückgabe, aber bei der Übergabe ist die Variable die die KeyValuePairs aufnimmt leer.


POST /ICWebservices.svc/rest/GenericWebservice/v1.0/test HTTP/1.1
Host:localhost:51235
Content-Type: application/json; charset=utf-8
Content-Length: length
Accept:application/json

{
	"IdentId": "Test-IdentId",
	"Password": "Test-Password",
	"ProcessData": 
		{"Key1":"value1","Key2":"value2"}
}

Bringt das Ergebnis:


{
          "ResultList":{"key3":"value3","key4":"value4"}
}

Im TestCode füge ich aber die Eingangsparameter dazu, die Variable ist aber leer.


 SimpleDictionary<String, String> result = new SimpleDictionary<String, String>();
            result.Add("key3", "value3");
            result.Add("key4", "value4");

            foreach (KeyValuePair<String,String> keyvalue in webServiceRequestParams.ProcessData) {
                result.Add(keyvalue.Key, keyvalue.Value);
            }

            r.ResultList = result;

Muss ich für die hin serializierung noch was machen?

Und noch eine Frage:
Ich habe das mit der GetObjectData Methode auch schon mal probiert, aber mit overwrite. Das funktioniert nicht, wieso eigentlich nicht?


 public class KeyValuePairList<TKey, TValue> : Dictionary<TKey,TValue>
    {
        public override void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            this.ToList().ForEach(p => info.AddValue(p.Key.ToString(), p.Value));
        }
    }

Danke!

19.02.2017 - 16:26 Uhr

Wie gesagt; dann wirste wohl nen Custom Formatter brauchen (vermutlich).
Die Default-Darstellung des Serializers ist übrigens nicht falsch, sondern inhaltlich und in Sachen Json absolut korrekt.
Die simple Darstellung formatiert es nur als Json-Objekt.

Schade, ich denke die Einstellungsänderung müsste doch eigentlich leicht sein.
Ich weiss, das die Json Darstellung korrekt ist, aber die Kunden würden gerne die andere Darstellung übermitteln und zurück bekommen.

Naja vielleicht finde ich ja noch die Möglichkeit die Einstellung


DataContractJsonSerializerSettings { UseSimpleDictionaryFormat = true };

zu ändern.

17.02.2017 - 23:55 Uhr

Ich soll also Rest und SOAP Webservice mit ASP.Net Core WebApi erstellen.

Da habe ich nicht das Seralisierungsproblem?

Ich brauche in meinem Fall einen Service der mittels REST oder SOAP angesprochen werden kann.
Diesem Service werden Listen von KeyValuePairs übergeben und als Ergebnis werden wieder Listen von KeyValuePairs zurückgegeben (nach einer Verarbeitung natürlich 😃).

Mit WCF funktioniert alles prima nur eben leider nicht die richtige Darstellung von Dictionary (KeyValuePairs) sowohl bei der Übergabe und auch bei der Rückgabe.

Da die Verarbeitung gekapselt ist, könnte ich, hoffe ich zumindest, auch einen neue ASP.Net Core Api verwenden. Ich bräuchte nur eine KeyValuePair Übergabe und Rückgabe.

Könnt Ihr sagen, ob das funktioniert mit der Serialisierung?

{"key1":"value1","key2":"value2"} -> Dictionary<String,String>

Vielen Dank für die Hilfe!

17.02.2017 - 15:33 Uhr

Kannst du mir vielleicht sagen wo dieser Code rein soll. Das ist doch genau mein Problem.



    DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings { UseSimpleDictionaryFormat = true };

    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(MyObject), settings);

Wie gesagt, ich benutze ein WCF Service und die Serialisierung funktioniert intern und automatisch.

17.02.2017 - 15:27 Uhr

Vielleicht stehe ich ja auf dem Schlauch.

Zu lesen ist, auch in dem Artikle von Abt, das "JSON (based on the DataContractJsonSerializer) ".

Ich möchte diesen Serializer nicht ersetzen, sondern nur eine Konfiguaration(Setting) ändern.

17.02.2017 - 15:22 Uhr

Sorry, verstehe die Antwort nicht.

Wo soll den der Code hin?

17.02.2017 - 15:18 Uhr

Danke, aber Google habe ich auch. Sorry!
Aber ich habe jetzt schon zwei Tage im Internet zu gebracht.

Es kann sein, dass das zu einer Lösung führt, aber ich habe es so nicht hinbekommen.
Ich möchte auch nicht den ganzen Standard umhauen, es sollen immer noch alle anderen serialisierungen funktionieren.

Die Funktion (ab .net 4.5) ist relativ neu und der Beitrag schon älter. Ich kann mir nicht vorstellen, dass es so aufwendig ist, diesen Parameter zu setzen.

Aber danke für die Hilfe!

17.02.2017 - 14:50 Uhr

Die Klasse ist mir bekannt. Ich hatte ja geschrieben:

Im Internet habe ich gefunden, das man ein Parameter UseSimpleDictionaryFormat in DataContractJsonSerializerSettings setzen kann.
Leider finde ich keinen Weg den Parameter zu setzen.

Ich habe ja kein Code wo ich ansetzen kann, denn die Serialisierung macht ja der WCF Service intern für mich.

Genau das ist die Frage, wo kann ich das für den internen DataContractJsonSerializer setzen?

Danke!

17.02.2017 - 14:39 Uhr

Hallo,

viellecht war es ein wenig kurz das Beispiel:

es geht um den Type Dictionary<string,string>

er wird im Standard WCF so serializiert.

[{
        "Key":"Key1",
        "Value":"Value1"
    },{
        "Key":"Key2",
        "Value":"Value2"
    }]

er soll aber

{
        "Key1":"Value1",
        "Key2":"Value2"
    }

so aussehen.

Dafür soll man den Parameter UseSimpleDictionaryFormat auf true setzen.

Die Frage ist nur wo.

Gruss!

Pedro

17.02.2017 - 13:41 Uhr

Hallo,

habe ein Problem mit JSON in Verbindung mit Dictionary Objekt.

Der WCF Service serialisiert das Dictionary Objekt:


[{
		"Key":"Zeichenfolgeninhalt",
		"Value":"Zeichenfolgeninhalt"
	}]

Ich brauche aber {Key-Wert:Value-Wert} .
Im Internet habe ich gefunden, das man ein Parameter UseSimpleDictionaryFormat in DataContractJsonSerializerSettings setzen kann.
Leider finde ich keinen Weg den Parameter zu setzen.

Ich habe ja kein Code wo ich ansetzen kann, denn die Serialisierung macht ja der WCF Service intern für mich.

Kennt jemand das Problem und kann mir helfen?

Danke!

Pedro

14.12.2016 - 22:43 Uhr

Hallo,

ich habe ein grosses Problem. Ich verwende in meinem .net csharp Projekt (A) eine .net csharp dll aus einem anderen Projekt (B) von mir.
Ich habe sie über den Verweis eingebunden.

Und die Applikation erstellt. Alles gut, bis dahin.

Jetzt ändere ich was in meinem DLL Projekt (B) ohne irgendwelche Aufrufparameter von Methoden zu ändern. Wenn ich jetzt nur die dll tausche in meiner Applikation aus Projekt (A), ohne die Applikation neu zu erstellen, kommt ein Fehler beim Aufruf, da die Version nicht mit der kompelierten Version übereinstimmt.

Gibt es eine Lösung, das ich die DLL Versionsunabhängig einbinden kann?

Es gibt sehr viele Version der DLL und daher müsste ich z.b bei Änderungen an Projekt A mit jeder DLL Version (B) kompelieren und damit eine Version von A erzeugen. Das ist sehr unschön.

Wie gesagt, es ändert sich nichts an den öffentlichen Aufrufen und den Parametern in der DLL

Danke!

Pedro

28.11.2012 - 16:14 Uhr

Wenn das mit der Service-Implementierung kein Problem ist, so verstehe ich nicht warum das (automatische) Generieren der WSDL ein Problem sein soll?

Ich denke nicht das es ein Problem ist, sonder ich muss mich erstmal in WCF einarbeiten, dann wird es schon funktionieren, wenn du es sagst.

Danke!

Pedro

27.11.2012 - 14:03 Uhr

Danke, hast du zum letzten Punkt einige Informationsseiten oder Bücher die du empfehlen kannst.

Wer bzw. woher soll die Implementierung von Summe und Produkt kommen?

Es gibt eine Interface Programmierung die immer genauso vom Webservice aufgerufen wird. Was passiert steht in der Datenbank und wird dynamisch von der internen Webserviceprogrammierung aufgerufen. Das ist nicht das Problem.

Ich muss nur irgenwie hinbekommen, dass der Aufrufer weiss welche Methoden und Parameter intern aufgerufen werden können.

Danke

27.11.2012 - 12:58 Uhr

Ich habe ein Entwicklungsframework mit dem man Formulare und Funktionen erstellt werden. Der Webservice soll Formulare bedienen und Feldinhalte eintragen und Ergebnisse zurückgeben.

Im Framework wird also ein neuer Webservice definiert, welches Formular mit welchen Feldern und welchen Funktionen aufgerufen werden.

Zur Zeit gibt schon einen .Net Webservice der nur aus zwei Felder besteht.

  1. Name des Webservice (String)
  2. Prozessdaten (XML Type) - die Speziellen Daten des Webservice (Feld1, Feld2)

So funktioniert es, aber Nachteil ist, dass der User nicht weiss welche Webservice überhaupt angeboten werden und auch nicht welche Werte erwartet werden.
Und es kann aus dem WSDL kein Client automatisch erstellt werden, was die Kunden sehr stört.
Also soll es jetzt anders umgesetzt werden.

Man müsste also das WSDL irgendwie automatisch zusammenbauen oder er müsste es aus der Datenbank ziehen.

Aber keine Ahnung wie das gehen soll.

27.11.2012 - 12:00 Uhr

Hallo,

ich würde gerne einen neuen Webservice programmieren der dynamisch aus einer Datenbank seine Definition bezieht.

Zum Beispiel (nur einfaches Beispiel):
Tabelle webservice
ID; Name
1; Summe
2; Produkt

Tabelle webservice_param
ID;Feldname;Datentyp
1;Feld1;int
1;Feld2;int
1;Feld3;int
2;Feld1;float

Das wsdl muss also dynamisch erstellt werden.

Geht das?

Danke für die Hilfe!

Pedro

17.10.2012 - 10:14 Uhr

Hallo Ihr,

ich habe ein .Net Webservice in CSharp geschrieben, wie bekomme ich den Aufrufer heraus.

Benötigt werden folgende Information.

  1. Username des Aufrufers
  2. Rechnername des Aufrufers

Diese Informationen sollen mit der EnterpriseLibrary.Logging ausgegeben werden.

Vielen Dank!

Pedro

11.01.2011 - 12:34 Uhr

Hallo,

ich möchte gerne den Druckerdialog aus Office 2010 nachbauen. Dafür bräuchte ich die Installierten Drucker (habe ich schon mit PrinterSettings.InstalledPrinters), deren Eigenschaften und das Drucker-Icon.

Ich bräuchte also eine Möglichkeiten die Eigenschaften und das Icon, was unter Windows angezeigt wird, abzurufen.

Hat jemand eine Idee!

Pedro

21.12.2010 - 10:20 Uhr

Danke für die Hilfe.

Habe jetzt die Definition über das AppSettings Form im VisualStudio gemacht.

Type: System.Collection.Specialized.StringCollection

Ergebnis:


<applicationSetting>
  <Anwendung.Properties.Settings>
    <setting name="FolderFilter" serializeAs="Xml">
    <value>
      <ArrayOfString xmlns:xsi... xmlns:xsd... >
         <string>.svn</string>
         <string>temp</string>
      </ArrayOfString>
    </value>
    <setting>
  </Anwendung.Properties.Settings>
</applicationSetting>

Jetzt muss ich es nur noch in eine Liste wieder auslesen....


foreach (String value in Properties.Settings.Default.FolderFilter)
{
   filterList.Add(value);
}

Danke für die Hilfe!

Pedro

21.12.2010 - 09:14 Uhr

Hallo,

könnt Ihr mir bitte bei einem kleinen Problem helfen?

Ich möchte in der Config Datei eine Liste von Werten für einen Paramter speichern.

Die Werteliste kann jetzt 0-n Einträge haben. Wie kann ich das in dem Configfile definieren und dann wieder in eine Liste auslesen?

so geht es nicht ....


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Werteliste" value="Wert1" />
    <add key="Werteliste" value="Wert2" />
  </appSettings>
</configuration>

und so auch nicht... oder?


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Werteliste" >
         <value>Wert1</value>
         <value>Wert2</value>
    </add>
  </appSettings>
</configuration>

Wie lese ich das ganze dann wieder aus?


// ????????????????????
foreach (string value in ConfigurationManager.AppSettings[key])
{
      Console.WriteLine("Value: {1}", value);
}

Danke für die Hilfe.

Pedro

22.09.2010 - 21:10 Uhr

Danke für den Hinweis, der mir leider nicht weiterhilft.

Ich möchte doch nur ein funktionierendes RTF Control. Leider ist das nicht mit dem Standard möglich.

Vielleicht hat ja jemand noch eine Lösung.

Pedro

22.09.2010 - 17:43 Uhr

Wie DickesB schon richtig geschrieben hat, liegt es an der schwäche der Standard Version der riched20.dll die in Windows system32 Ordner liegt (Version 3.1).

Wenn Office installiert wurde, gibt es noch eine Passende riched20.dll im "Common Files\microsoft shared\officexx" (z.B. bei Office2010 Version 6.0).

Ok ich kann auch die Datei laden, aber wie bekomme ich raus in welchem Ordner "officexx" die Datei liegt, denn bei jeder Office Version gibt es einen anderen Ordner.

Ich kann natürlich von Office14 bis Office10 alle Ordner durch gehen und schauen,
aber ist das schön?

Des Weiteren gibt es das Problem, wenn kein Office installiert ist, dann gibt es keinen Ordner mit einer neueren dll.

So habe ich mir gedacht, die Datei einfach mitzulieferen. Leider hat sich gerade ergeben, dass bei Office 2007 Installationen die mitgelieferte Datei von Office 2010 nicht funktioniert.

Also alles keine gute Lösung!

Hat jemand eine Idee?

Pedro

11.08.2010 - 21:08 Uhr

Leider gibt mir das nicht das was ich möchte.
Ich bekomme
asm = {System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089}

Mich intressiert aber die Version von riched20.dll.


Assembly asm = typeof(RichTextBox).Assembly;
            Version version = asm.GetName().Version; 

Kann bitte jemand Licht machen.

Pedro

11.08.2010 - 20:48 Uhr

Ja, das funktioniert auf jedenfall, aber schöner wäre es, wenn ich die richtige Version nachladen könnte.

Nur leider bekomme ich es nicht hin.


Assembly[] appAssemblies = AppDomain.CurrentDomain.GetAssemblies();

            for (int i = 0; i < appAssemblies.Length; i++)
                Console.WriteLine(
                    "{0}: {1}\n", i + 1, appAssemblies[i].FullName);

Komisch ist auch das nach dem Laden keine Assembly riched20 geladen ist.

Ich verstehe es irgendwie nicht.

Pedro

11.08.2010 - 20:35 Uhr

Hallo,

ich habe noch ein Problem damit.

Ich habe jetzt den Code:


if (!Is64BitExecution)
                {
                    string file = Application.StartupPath + "\\RICHED20.DLL";
                    
                    if (System.IO.File.Exists(file))
                    {

                        LoadLibrary(file);
                        version6 = true;
                        
                    }
                    
                }
                else
                {
                    string file = Application.StartupPath + "\\64Bit\\RICHED20.DLL";

                    if (System.IO.File.Exists(file))
                    {

                        LoadLibrary(file);
                        version6 = true;

                    }
                }

Das Programm läd die Dateien richtig (laut Debugger), aber bei dem 64Bit System kommt wieder die Fehlermeldung.

Kann es sein, dass das Programm die Datei die im Root Ordner liegt schon geladen hat und diese nimmt.

Was passiert, wenn schon die falsche DLL geladen wurde. Kann ich die DLL auch wieder entladen und die richtige DLL laden?

Ich hoffe, ich habe mich nicht zu unklar ausgedrückt.

Pedro

11.08.2010 - 20:24 Uhr

Hallo,

ich habe mal eine kurze Frage.

Wie kann ich die Version einer geladenen DLL ermitteln.
Es geht darum nicht ein File-Namen anzugeben, sondern es soll die
geladen DLL ermittelt werden. (Im aktuellen Fall riched20.dll)

Danke!

Pedro

11.08.2010 - 17:32 Uhr

Ich liefer die riched20.dll mit, denn im Windows Verzeichnis ist ein alte dll mit der einige Dinge nicht gehen (Tabellen werden nicht richtig dargestellt).

Deswegen lade ich die DLL zur Laufzeit.

LoadLibrary(file);

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        internal extern static IntPtr LoadLibrary(string libname);

Wie kann ich das am besten handeln?

Und wie bekomme ich raus, welche Vesion der DLL geladen ist?
Kann ich die Verionsnummer auslesen?
Danke!

Pedro

11.08.2010 - 17:13 Uhr

Hallo,

wir haben den Fehler gefunden.

Es liegt doch an der riched20.dlll die es in zwei Versionen gibt eine für 32bit und eine für 64bit.

Wie kann ich es jetzt Handeln das die Richtige Version geladen wird?

Dank!

Pedro

11.08.2010 - 12:41 Uhr

Hallo,

ich habe ein sehr Merkwürdiges Verhalten zur Zeit nur auf einem Rechner.

Ich benutze das RichTextControll.

Dort bekomme ich beim Starten folgende Fehlermeldung:
Die RichEd20.DLL-DLL kann nicht in den Arbeitsspeicher geladen werden.
Bei System.Windows.Form.RichTextBox.get_CreateParams()
....

Der Rechner ist mit einem 64Bit Windows 7 System ausgerüstet.
Ich kann aber nicht sagen, ob es an 64Bit liegt.

Hat jemand eine Idee!

Ich habe schon verschiedene riched20.dll probiert.

Vielen Dank für jede Hilfe!

Pedro

02.02.2010 - 14:10 Uhr

Hallo,

danke für die Antworten.

Ich verstehe aber noch was nicht ganz.
In unserem Webservice kann ein Request lange dauern. So lange der Request dauert steht der Webservice für andere Request, um genau zu sein steht eigentlich der gesamte IIS. Kann das sein, wenn immer neue Instancen entstehen sollen oder wo kann das Problem liegen?

Noch eine Frage. Kann ich ein Request nach einer bestimmten Zeit intern aus dem Webservice abbrechen und eine Fehlermeldung zurückgeben?
Z.B. durch ein Thread?

Vielen Dank!

Pedro

02.02.2010 - 11:22 Uhr

Hallo,

ich habe ein kleines Problem mit einer Webservice Programmierung.

Wann wird die Webservice Hauptklasse Initialisiert und wieder zerstört?

Bei jedem Aufruf des Webservices oder beim ersten Aufruf und wird erst wieder zerstört, wenn der Server regestartet wird?

Wie kann ich realisieren, das ich eine DB Connection nur einmal aufbauen muss und jeder Webserviceaufruf immer die selbe Instance der Connection benutzt?

Wie sieht es aus, wenn mehrer User gleichzeitig den Webservice aufrufen, wird für jeden eine eigene Webservice Instance aufgebaut oder werden die Anfragen nach einander abgearbeitet?

Vielen Dank für die Hilfe!

Pedro

28.07.2009 - 16:22 Uhr

Hallo,

es ist keine .Net COM DLL.

Ich habe ja die generierte Interop-DLL aus dem COM-Verweis genommen.
Sollte das nicht gehen?

Pedro

28.07.2009 - 11:44 Uhr

Nein das ist die einzige DLL im BIN Verzeichnis, die dazu gehört.

Vorher hat es ja über die COM Verweis Anweisung funktioniert.
Diese Copiert ja auch die DLL in das bin verzeichnis.
Ich habe jetzt zusätzlich zu dieser Anweisung den Code geschrieben. Ist das vielleicht das Problem?

Danke!

Pedro

28.07.2009 - 11:23 Uhr

Hallo,

ich habe leider ein Problem die Datei zuladen.

Error
Could not load file or assemply 'Interop.xyt.dll' or one of it s dependencies. The system cannot find the file specified.

Es ist ein COM DLL.


AppDomainSetup setup = new AppDomainSetup();
setup.PrivateBinPath = AppDomain.CurrentDomain.BaseDirectory;

AppDomain app = System.AppDomain.CreateDomain("ComDLL", null, setup);
app.Load("Interop.xyt.dll");

Com Datei liegt in Bin Verzeichnis.

Danke für weitere Hilfe!

Pedro

28.07.2009 - 09:26 Uhr

Dank!

Ja sowas in der Art dachte ich, aber kannst du mir vielleicht netter weise ein kurzes Beispiel geben, muss nicht ausprogrammiert sein, sondern nur als Grundlage. Ein Link zu einer Beispiel Doku wäre auch super.

Vielen Dank für die Hilfe!

Pedro

PS: Das Problem ist so sch....

28.07.2009 - 09:18 Uhr

Hallo,

ich habe ein sehr grosses Problem.

Ich habe einen Webservices geschrieben, der per Verweis auf eine DLL (externer Anbieter) zugreift.
Das funktioniert beim ersten Aufruf des Webservices auch wunderbar. Beim zweiten Aufruf des Webservice hat eine Variable aus der DLL, aber immer noch den Wert des ersten aufrufes (BUG). Leider muss ich diesen BUG umgehen. Die Variable ist so lange gefüllt bis ich den Webserver ISS neustarte. Der Webserver hält also irgendwie die DLL Daten.

Jetzt meine Frage, kann ich dafür sorgen, das wenn ich den Webservice aufrufe die DLL immer neu initialisiert wird oder neu geladen, so das alle Variablen geleert sind? Die Webservice Klasse wird richt abgebaut.

Dank!

Pedro

27.07.2009 - 09:43 Uhr

verwendetes Datenbanksystem: XML

Hallo Ihr,

ich habe mal wieder eine Frage zur Prüfung eines XML Strings gegen mehrere aufbauende XSD Files/Strings.

Das Problem ist, das ich nicht nur ein XSD habe, sondern mehrere auf einander aufbauende XSD (SimpleType und ComplexType).

Wie kann ich das realisieren. Ich habe bis jetzt nur die Lösung mit einem XSD gefunden.

Vielen Dank!

Pedro

14.05.2009 - 13:05 Uhr

Die Lösung:


HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(myPath);
myRequest.Credentials = CredentialCache.DefaultNetworkCredentials;

Danke!

Pedro

13.05.2009 - 18:20 Uhr

Hallo,

ich rufe in meiner aspx über ein HttpWebRequest eine Seite in meinem Webspace auf. Leider übernimmt er nicht automatisch die Credentials die der User an der ersten Seite eingegeben hat und er bekommt eine 401 zurück.

Gibt es einen Weg diese Credentials an die folgende Seite zu übergeben?

Danke!

Pedro

13.05.2009 - 18:13 Uhr

Vielen Dank!

Werde ich dann gleich mal probieren.

Pedro

13.05.2009 - 16:19 Uhr

verwendetes Datenbanksystem: XML

Hallo,

hat jemand von euch den Regulären Ausdruck, um zu prüfen, ob ein XML Name den XML Konventionen entspricht.

  • darf nicht mit xml beginnen
  • keine Leerzeichen
  • keine Sonderzeichen
  • usw usw...

Danke für die Hilfe!

Pedro

06.05.2009 - 11:59 Uhr

Hallo,

wenn ich die mit AllKeys alle abfrage bekomme ich

ctl00$ontentPlaceHolder1$TextBox1

ist das der Richtige Name den ich nehmen soll?
ist das die ClientID?

Wie komme ich an die ID?

Das Problem, was ich sehe ist, wenn sich der Formularaufbau ändert, ändert sich auch der Name und alle Seiten müssen geändert werden. Ist das richtig?

Pedro

06.05.2009 - 11:40 Uhr

Danke, scheint gut zu funktionieren, habe alles umgebaut.

Nur noch eine doofe Frage.

Wie greife ich auf die Formulatdaten zu vom Handler?
string text = context.Request.Form["TextBox1"] bringt nur ein null zurück.

Danke für die Hilfe!

Pedro

06.05.2009 - 10:40 Uhr

Hi,

danke, aber genau das ist ja mein Problem, wie kann ich an den Handler Daten per Post übergeben.

Ich könnte wieder ein HttpWebRequest machen, aber dann habe ich das XMLDokument ja wieder in einer Variablen und nicht beim User. So wie ich ja auch den Webservice Request mache, aber ich möchte ja das XML File an den User schicken.

Also muss ich doch, wenn ich das richtig verstanden habe, ein Redirect auf die ashx Seite machen, da kann ich ja nur per Get übergeben oder?

Pedro

06.05.2009 - 09:33 Uhr

Ok dann versuche es nochmal.

(Leider ist es nicht möglich das ich Code aus meinem Programm poste, denn der Entwicklungsrechner hat nichts mit meinem Internetrechner zu tun.)

Ich habe eine Handler Seite gebaut, die per
Response.Redirect("ResultHandler.ashx?param1=" + test2 + "");
aufgerufe wird.

Die gibt Hallo World und eine mit Get übergebene Variable aus.

So weit so gut, aber wie kann ich an die Seite eine XML Dokument Variable ohne get übergeben?

Ok nochmal der Ablauf (so wie ich dachte):

  1. Aufruf einer aspx Seite mit Formular Feldern.
  2. Ok Button
  3. Selbe ASPX Seite ermittelt ein XML Dokument mit den Formulardaten.
    3.1. über aufruf eines externen Webservice oder
    3.2. eigene XML Create Methode je nach Fall
  4. Ausgabe des XML Dokument an Client (über Seite - war ja das Problem)

Alternative so wie ich das verstanden haben.
4. Übergabe des XML Dokumentes an den Handler und Ausgabe über den Handler.
Oder sollte der Händler die Formulardaten erhalten und das XML Dokument erstellen und ausgeben? Wie werden aber dann die Formulardaten ohne get an den Händler gepostet?

Ist das so korrekt und wie kann ich an die Händler Seite mein Fertiges XML Dokument übergeben, so das er es ausgibt?

Danke für die Hilfe!

Pedro

05.05.2009 - 22:23 Uhr

Danke für die Hilfe!

Das mit den Handlern habe ich mal versucht, bin aber am Post übertragen gescheitert.

Wenn du Lust und Zeit hast, kannst du ja das kleine Beispiel von Oben mal mit Handlern umsetzen und hier Posten.

Aber nur wenn du Lust hast, ich habe ja erstmal eine Lösung.
Würde mich nur mal Interessieren, wie du das machen würdest.

Schönen Abend!

Pedro

05.05.2009 - 21:07 Uhr

Hallo,

habe die Lösung gefunden.

man darf in der PostBackUrl den Dateiname nicht "richtig Schreiben"!!!!

Man muss einfach die Gross-Kleinschreibung verwechseln und es geht.

Statt: TestForm.aspx Einfach: TESTForm.aspx

und schon geht es.

So erklärt sich auch das eine Datei ging und die Kopierte nicht. Denn bei der ersten habe ich mich in der Gross-Kleinschreibung geirrt.

Ich konnte das bei mir reproduzieren können.

Schönen Abend!

Pedro

05.05.2009 - 19:49 Uhr

Hallo,

die Beispielanwendung ist schnell erklärt.

Formular mit einer Textbox und einen Button.



protected void Button1_Click(Object sender, EventArgs e)
{
String test2 = "<?xml version='1.0'?><test>"+TextBox1.Text+"</test>";
Response.Clear();
Response.Write(test2);
Response.End();
}


Dann geht bei mir der Zurückbutton nicht auf das Formular zurück. Ohne "<?xml version='1.0'?>" schon. Aber mit Response.ContextType = "text/xml"; wieder nicht.

Danke für die Hilfe!

Pedro