Problem bei Zugriff auf statische IP (vielleicht: RCF-Konform??)



  • Hallo,
    für eine Studienarbeit arbeite ich mich zurzeit in C# ein und versuche damit Daten aus XML-Dateien auszulesen.

    Die eigentliche Aufgabe ist, Daten aus einem Füllstandsensor auszulesen, welche im XML-Format gespeichert sind. Die Verbindung läuft über eine DFÜ-Verbindung. Die XML-Datei hat eine statische IP.
    Meine Eigentliche Frage kommt am Ende des Textes, aber ich habe mal die vorherigen Ereignisse mit aufgeschrieben. Vielleicht gibt es ja wichtige Details, die mir nicht aufgefallen sind.

    ------->
    Ich habe mittlerweile ein lauffähiges Programm mit dem ich aus XML-Dateien von der Festplatte und aus dem Internet herauslesen kann. Wenn ich aber auf das Füllstandgerät zugreifen will (statische IP) erhalte ich folgenden Fehler:
    „Der Server hat eine Protokollverletzung ausgeführt.. Section=ResponseHeader Detail=Auf CR muss LF folgen“

    Zu der Meldung habe ich schier nichts gescheites googeln können, aber ein Kollege hat mir erzählt, dass das Gerät vielleicht nicht ganz RFC-Konform sei und man dieses mit folgendem Code nachprüfen könnte:

    ----

    (Add System.Configuration as a reference to your project.)
    public static bool SetAllowUnsafeHeaderParsing20()
    {
      //Get the assembly that contains the internal class
      Assembly aNetAssembly = Assembly.GetAssembly(typeof(System.Net.Configuration.SettingsSection));
      if (aNetAssembly != null)
      {
        //Use the assembly in order to get the internal type for the internal class
        Type aSettingsType = aNetAssembly.GetType("System.Net.Configuration.SettingsSectionInternal");
        if (aSettingsType != null)
        {
          //Use the internal static property to get an instance of the internal settings class.
          //If the static instance isn't created allready the property will create it for us.
          object anInstance = aSettingsType.InvokeMember("Section",
            BindingFlags.Static | BindingFlags.GetProperty | BindingFlags.NonPublic, null, null, new object[] { });
          if (anInstance != null)
          {
            //Locate the private bool field that tells the framework is unsafe header parsing should be allowed or not
            FieldInfo aUseUnsafeHeaderParsing = aSettingsType.GetField("useUnsafeHeaderParsing", BindingFlags.NonPublic | BindingFlags.Instance);
            if (aUseUnsafeHeaderParsing != null)
            {
              aUseUnsafeHeaderParsing.SetValue(anInstance, true);
              return true;
            }
          }
        }
      }
      return false;
    }
    

    ----

    Die Funktion sollte TRUE zurückliefern, allerdings erhalte ich folgende Fehlermeldung:
    „Der Typ "System.Configuration.ConfigurationSection" ist in einer nicht referenzierten Assembly definiert. Fügen Sie einen Verweis auf die Assembly "System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" hinzu“

    FRAGE:
    Kann mit jemand erklären wie man die „Version“ „Culture“ und „PublicKeyToken“ umstellen kann um diesen Fehler loszuwerden?
    Ich finde so viele verschiedene Sachen, aber nichts Konkretes um diese Angaben zu ändern. Habe es ebenfalls gegoogelt und in Foren geforscht und so wie ich das mitgekriegt habe kann man das über eine XML-Konfigurations-Datei machen, aber das hat auch nicht funktioniert.
    Kennt sich da jemand in der Thematik aus?

    Danke im Voraus
    greetings

    Auszug aus MSDN:
    Standardmäßig setzt .NET Framework RFC 2616 für URI-Analysen strikt durch. Einige Serverantworten enthalten möglicherweise Steuerzeichen in unzulässigen Feldern. Dies führt dazu, dass die System.Net.HttpWebRequest.GetResponse-Methode eine WebException auslöst. Wenn useUnsafeHeaderParsing als true festgelegt ist, System.Net.HttpWebRequest.GetResponse wird in diesem Fall keine Ausnahme ausgelöst. Die Anwendung ist dann jedoch anfällig gegenüber mehreren Formen von URI-Analyseangriffen. Die beste Lösung besteht darin, den Server so zu ändern, dass die Antwort keine Steuerzeichen enthält.



  • Vielleicht passt das Code-Beispiel nicht zum installierten Framework,
    vielleicht helfen Dir folgende Links weiter.

    http://msdn.microsoft.com/en-us/library/system.configuration.configurationsection.aspx
    http://www.developer.com/net/net/article.php/3617366



  • adonis schrieb:

    Vielleicht passt das Code-Beispiel nicht zum installierten Framework,
    vielleicht helfen Dir folgende Links weiter.

    http://msdn.microsoft.com/en-us/library/system.configuration.configurationsection.aspx
    http://www.developer.com/net/net/article.php/3617366

    danke, da schau ich auch noch rein!
    Bin hier noch auf der Suche, habe das Problem mittlerweile in 2 weiteren Foren gefunden
    http://www.c-sharp-forum.de/viewtopic.php?t=82179&highlight=culture
    http://www.mycsharp.de/wbb2/thread.php?threadid=53367&hilight=culture
    nur leider klappt denen ihr Lösungsweg bei mir nicht 😞


Anmelden zum Antworten