Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von accSharp
Thema: SNMP Connection mit Netzwerkthermometer empfängt keine Daten
Am im Forum: Netzwerktechnologien

Hallo Witte,

danke für Deine Antwort. Wie soll ich denn testen, ob Daten übertragen werden? Das ist ja generell mein Versuch. Ich habe mal eine SNMP Nummernkette aufgebaut, wobei die Angaben (bspw. "1.3.6.1.4.1.38783.1.1.0") ja aus dem Handbuch des Geräts stammen:

Daher sieht mein Sourcecode dzt. so aus:



    internal class SnmpConnector
    {
        internal static void Connect()
        {
            string host = "10.17.0.102";
            string community = "public";
            SimpleSnmp snmp = new SimpleSnmp(host, community);

            if (!snmp.Valid)
            {
                Console.WriteLine("SNMP agent host name/ip address is invalid.");
                return;
            }

            for (int i = 39999; i > 0; i--)
            {
                foreach (var x in OidsSuffixe)
                {
                    var completeOid = "1.3.6.1.4.1."+ i +"." + x;
                    Dictionary<Oid, AsnType> result = snmp.Get(SnmpVersion.Ver1, new string[] { completeOid });

                    if (result == null)
                    {
                        Console.WriteLine("No results received with OID: " + completeOid);
                        continue;
                    }

                    foreach (var kvp in result)
                    {
                      // Result ist immer null, in diese Schleife kommt man nie rein.

                        Console.WriteLine("{0}: {1} {2}", kvp.Key.ToString(),
                                              SnmpConstants.GetTypeName(kvp.Value.Type),
                                              kvp.Value.ToString());
                    }
                }
            }
        }

        private static string[] OidsSuffixe // entnommen aus den Handbuch des Thermometers
        {
            get
            {
                return new string[]
                {
                        "1.1.0",
                        "1.2.0",
                        "1.3.0", 

                        "2.1.1.0", 
                        "2.1.2.0",
                        "2.1.3.0", 
                        "2.1.4.0", 
                        "2.1.5.0", 
                        "2.1.6.0", 
                        "2.1.7.0",

                        "2.4.1.0", 
                        "2.4.2.0", 
                        "2.4.3.0",
                        "2.4.4.0", 
                        "2.4.5.0",
                        "2.4.6.0",

                        "2.5.1.1.0", 
                        "2.5.1.2.0", 
                        "2.5.1.3.0",   
                        "2.5.1.4.0",  

                        "2.5.2.1.0", 
                        "2.5.2.2.0", 
                        "2.5.2.3.0",   
                        "2.5.2.4.0",   

                        "2.6.1.1.0", 
                        "2.6.1.2.0", 
                        "2.6.1.3.0",   
                        "2.6.1.4.0", 

                        "2.6.2.1.0", 
                        "2.6.2.2.0", 
                        "2.6.2.3.0",
                        "2.6.2.4.0", 

                        "2.7.1.1.0",
                        "2.7.1.2.0",
                        "2.7.1.3.0",
                        "2.7.1.4.0",
                        "2.7.1.5.0",

                        "2.8.1.0",
                        "2.8.2.0",
                        "2.8.3.0",
                        "2.8.4.0",

                        "2.9.1.0",
                        "2.9.2.0",
                        "2.9.3.0",
                        "2.9.4.0",

                        "2.10.1.0", 

                        "3.1.0",
                        "3.2.0",
                        "3.3.0",
                        "3.4.0",
                        "3.5.0",
                        "3.6.0",
                        "3.7.0",
                        "3.8.0",
                        "3.9.0",
                        "3.10.0",
                        "3.11.0",
                        "3.12.0",
                        "3.13.0",
                        "3.14.0"
                };
            }
        }
    }


Thema: SNMP Connection mit Netzwerkthermometer empfängt keine Daten
Am im Forum: Netzwerktechnologien

Guten Morgen zusammen,

ich versuche mit einem Teracom - TCW122B-CM via SNMP eine Verbindung aufzubauen. Im Vorfeld habe ich folgendes gemacht:

- Das Gerät ist angeschlossen und per Web-Interface erreichbar. Das Gerät lässt sich sowohl per Namen als auch per IP anpingen.
- Im Web Interface habe ich die SNMP Konfiguration folgendermaßen eingestellt:

SNMP Configuration: Enable
SNMP Port : 161
Write community: private
Read community: public

Um das Gerät per C# anzusprechen, verwende ich die bereits vielfach hier im Forum erwähnte Lib von https://www.snmpsharpnet.com/.

Ich habe mich hierzu für das einfachste Beispiel entschieden (https://www.snmpsharpnet.com/?page_id=102):



            string host = "10.17.0.102";
            string community = "public";
            SimpleSnmp snmp = new SimpleSnmp(host, community);

            if (!snmp.Valid)
            {
                Console.WriteLine("SNMP agent host name/ip address is invalid.");
                return;
            }

            Dictionary<Oid, AsnType> result = snmp.Get(SnmpVersion.Ver1, new string[] { "1.3.6.1.4.1.38783.1.1.0" });

            if (result == null)
            {
                Console.WriteLine("No results received.");
                return;
            }

            foreach (var kvp in result)
            {
                Console.WriteLine("{0}: {1} {2}", kvp.Key.ToString(),
                                      SnmpConstants.GetTypeName(kvp.Value.Type),
                                      kvp.Value.ToString());
            }


- Die Variable host entspricht der IP des Geräts.
- Die OID, die in der Methode snmp.Get() im result-Objekt verwendet wird, lässt sich aus dem Manual des Geräts ableiten:

11. Control and monitoring using SNMP
TCW122B-CM can be configured and monitored through SNMP (Simple Network Management
Protocol). This could be done using every SNMP v.1 compatible program. Parameters that can
be changed, are grouped according to their functions in the tables below. To obtain a valid
OID number it is necessary to replace the “x” symbol with ”1.3.6.1.4.1.38783”. To save the
changes configurationSaved (OID x.3.13.0) should be set to "1".

11.1. Product

OID / Name / Access / Description / Syntax
x.1.1.0 / name / read-only / Device name / String


Das result-Objekt ist jedoch immer null. Ich laufe immer in diese If-Abfrage:



            if (result == null)
            {
               Console.WriteLine("No results received.");
                return;
            }


Jemand eine Idee, wo der Fehler liegen könnte?

Vielen Dank im Voraus!

Thema: Keine Verbindung bei WebRequest an Hermes Versand API
Am im Forum: Web-Technologien

Nein, auf eine Hilfeanfrage an die angegebene Supportadresse wurde mitgeteilt, dass das .net Framework allgemein nicht unterstützt wird. Daher haben wir eine von der API völlig unabhängige Lösung entwickelt.

Thema: Keine Verbindung bei WebRequest an Hermes Versand API
Am im Forum: Web-Technologien

Zitat
In der Regel liegt dann ein Fehler in der Systemzeit vor. - Schon mal auspropiert das Syncen mit der Internetzeit zu (de)aktivieren ?

Aus meiner Sicht ist dies ausgeschaltet. Es handelt sich hierbei um eine per HyperV gestartete Virtuelle Machine mit Windows 7. Unter "Datum/Uhrzeit einstellen" kann man die Synchro nicht abstellten (so wie es hier beschrieben ist http://www.addictivetips.com/windows-tips/disable-time-synchronization-in-windows-7/) In HyperV ist der entsprechende Service für diese VM nicht aktiviert. Der API Abruf soll später im Rahmen eines Auftrags des SQL Server Agenten laufen. Auf diesem Server würde ich die Time Synch auch nicht deaktiveren wollen, um ungeplante Seiteneffekte zu vermeiden.
Zitat
hast du mal bei dem Hermes-Support angefragt? Wenn die die API zur Verfügung stellen sollten sie sie auch unterstützen. IMHO kommst du da schneller zum Ziel.

Ja das habe ich parallel zu meinem Post gestern getan. Vielen Dank nochmal für das rege Interesse und die zahlreichen Anregungen!

Thema: Keine Verbindung bei WebRequest an Hermes Versand API
Am im Forum: Web-Technologien

Hallo zusammen,

erstmal vielen Dank für Eure Antworten.

Zitat
Passt der Endpunkt ? Alsoist dieser erreichbar ?

Aus meiner Sicht ist der Endpunkt ok:
1. Die URL ist so im Handbuch angegeben
2. Beim Aufruf über einen Browser kommt keine Fehlermeldung zurück
3. Die WDSL Konfigurationsdatei ist auch erreichbar (https://hermesapi.hlg.de/hermes-api-prips-web/services/v15/PriPS?wsdl)


Allerdings kann ich die URL via Konsole nicht anpingen.
Fehler
ping https://hermesapi.hlg.de/hermes-api-prips-web/services/v15
/PriPS
Ping-Anforderung konnte Host "https://hermesapi.hlg.de/hermes-api-prips-web/serv
ices/v15/PriPS" nicht finden. Überprüfen Sie den Namen, und versuchen Sie es ern
eut.

Wie könnte man die Erreichbarkeit sonst testen?
Zitat
Hängst du hinter einem Proxy ?

Ja. Aber mit der Programmzeile

WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(ImpUser._user, "XXX", "XXX");

kann man darüber raus. Funktioniert bisher in anderen Implementierungen.
Zitat
Ansonsten sagt die Hilfe auf der angegebenen Seite, das dort ein "Implementation Guide" zu finden ist. Dort sollten doch alle nötigen Informationen verzeichnet sein.

Ja den gibt es, allerdings mit Java Code. Es werden auch alle einzelne Methoden beschrieben, die man bei sauberer Verbindung nutzen kann. Pseudocode für C# gibt es allerdings nicht.

Zu der hier problematischen Methode gibt es folgende Angaben:

5.1.1. Eingabeparameter pripsCheckAvailability
Dieser Service benötigt außer den Authentifizierungsangaben (siehe Kapitel 3) im
SOAP-Header keine weiteren Eingabeparameter.
Der SOAP-Body sieht für den Aufruf folgendermaßen aus:
<soapenv:Body> 
  <pripsCheckAvailability/> 
</soapenv:Body> 

5.1.2. Rückgabeparameter pripsCheckAvailability
Der SOAP-Body enthält nach erfolgreicher Prüfung die Version der Hermes API – C2C
PrivatPaketService . Im Fehlerfall wird eine ServiceException geworfen.
<soapenv:Body> 
  <pripsCheckAvailabilityResponse >     
    <pripsCheckAvailabilityReturn>string</pripsCheckAvailabilityReturn> 
  </pripsCheckAvailabilityResponse> 
</soapenv:Body>  


Feld Typ Pflicht Bemerkung
pripsCheckAvailability Return string Ja String repräsentiert die aktuelle Version der Hermes API - C2C PrivatPaketService . Ein mögliche Versionsangabe ist, 1.0.0.0001

5.1.3. Fehlermeldungen pripsCheckAvailability

Nr. Typ Text
311090 T Das Backend System ist nicht verfügbar.
Zitat
Und was steht denn in der Inner Exception?

Das hatte ich völlig übersehen, aber leider ist diese null. Ich habe mal die gesamte Exception kopiert, aber aus meiner Sicht ist neben der Angabe "Fault occurred while processing." nichts sinnvolles zu finden. Laut der Implementation Guide sollte ein Fehlercode zurückgegeben werden, der dann vermutlich in der Inner Exception steht. Leider ist das nicht so.
Fehler
- $exception {"Ein nicht gesicherter oder fehlerhaft gesicherter Fehler wurde vom anderen Teilnehmer empfangen. Den Fehlercode und Details finden Sie unter der inneren FaultException."} System.Exception {System.ServiceModel.Security.MessageSecurityException}
+ [System.ServiceModel.Security.MessageSecurityException] {"Ein nicht gesicherter oder fehlerhaft gesicherter Fehler wurde vom anderen Teilnehmer empfangen. Den Fehlercode und Details finden Sie unter der inneren FaultException."} System.ServiceModel.Security.MessageSecurityException
_className "System.ServiceModel.Security.MessageSecurityException" string
+ _data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
_dynamicMethods null object
+ _exceptionMethod {Void HandleReturnMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessage)} System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo}
_exceptionMethodString null string
_helpURL null string
_HResult -2146233087 int
- _innerException {"Fault occurred while processing."} System.Exception {System.ServiceModel.FaultException}
+ [System.ServiceModel.FaultException] {"Fault occurred while processing."} System.ServiceModel.FaultException
_className "System.ServiceModel.FaultException" string
+ _data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
_dynamicMethods null object
_exceptionMethod null System.Reflection.MethodBase
_exceptionMethodString null string
_helpURL null string
_HResult -2146233087 int
- _innerException null System.Exception
+ Statische Member
+ _ipForWatsonBuckets 0 System.UIntPtr
_message "Fault occurred while processing." string
_remoteStackIndex 0 int
_remoteStackTraceString null string
+ _safeSerializationManager {System.Runtime.Serialization.SafeSerializationManager} System.Runtime.Serialization.SafeSerializationManager
_source null string
_stackTrace null object
_stackTraceString null string
_watsonBuckets null object
_xcode -532462766 int
+ _xptrs 0 System.IntPtr
+ Data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
HelpLink null string
HResult -2146233087 int
- InnerException null System.Exception
+ Statische Member
+ IPForWatsonBuckets 0 System.UIntPtr
IsTransient false bool
Message "Fault occurred while processing." string
RemoteStackTrace null string
Source null string
StackTrace null string
TargetSite null System.Reflection.MethodBase
WatsonBuckets null object
+ Statische Member
+ _ipForWatsonBuckets 7767251 System.UIntPtr
_message "Ein nicht gesicherter oder fehlerhaft gesicherter Fehler wurde vom anderen Teilnehmer empfangen. Den Fehlercode und Details finden Sie unter der inneren FaultException." string
_remoteStackIndex 1 int
_remoteStackTraceString "\r\nServer stack trace: \r\n bei System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)\r\n bei System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)\r\n bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)\r\n bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)\r\n bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)\r\n bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)\r\n\r\nException rethrown at [0]: \r\n" string
+ _safeSerializationManager {System.Runtime.Serialization.SafeSerializationManager} System.Runtime.Serialization.SafeSerializationManager
_source "mscorlib" string
+ _stackTrace {sbyte[192]} object {sbyte[]}
_stackTraceString null string
_watsonBuckets null object
_xcode -532462766 int
+ _xptrs 0 System.IntPtr
+ Data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
HelpLink null string
HResult -2146233087 int
+ InnerException {"Fault occurred while processing."} System.Exception {System.ServiceModel.FaultException}
+ IPForWatsonBuckets 7767251 System.UIntPtr
IsTransient false bool
Message "Ein nicht gesicherter oder fehlerhaft gesicherter Fehler wurde vom anderen Teilnehmer empfangen. Den Fehlercode und Details finden Sie unter der inneren FaultException." string
RemoteStackTrace "\r\nServer stack trace: \r\n bei System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)\r\n bei System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)\r\n bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)\r\n bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)\r\n bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)\r\n bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)\r\n\r\nException rethrown at [0]: \r\n" string
Source "mscorlib" string
StackTrace "\r\nServer stack trace: \r\n bei System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)\r\n bei System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)\r\n bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)\r\n bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)\r\n bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)\r\n bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)\r\n\r\nException rethrown at [0]: \r\n bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)\r\n bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)\r\n bei accredis.ImExport.Hermes.PriPS.pripsCheckAvailability(pripsCheckAvailability request)\r\n bei accredis.ImExport.Hermes.PriPSClient.accredis.ImExport.Hermes.PriPS.pripsCheckAvailability(pripsCheckAvailability request) in d:\\Entwicklung\\accredis.Tests.StarterSM\\HermesApi\\PriPSService.cs:Zeile 2394.\r\n bei accredis.ImExport.Hermes.PriPSClient.pripsCheckAvailability() in d:\\Entwicklung\\accredis.Tests.StarterSM\\HermesApi\\PriPSService.cs:Zeile 2400.\r\n bei accredis.Tests.StarterSM.HermesApi.HermesConnector2.ExecuteUeberService() in d:\\Entwicklung\\accredis.Tests.StarterSM\\HermesApi\\HermesConnector.cs:Zeile 72." string
+ TargetSite {Void HandleReturnMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessage)} System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo}
WatsonBuckets null object
+ Statische Member


Leider kann ich keine wirklich weiteren brauchbaren Angaben geben, aber vielleicht hat ja doch jemand noch eine interessante Idee.

Thema: Keine Verbindung bei WebRequest an Hermes Versand API
Am im Forum: Web-Technologien

Hallo zusammen,

beim Absetzen eines WebRequests über die Hermes API (https://developerportal.hlg.de/wps/portal/API_PARTNER/) bekomme ich folgenden Fehler:

Fehler
Server stack trace:
bei System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)
bei System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeDas Programm "[828] acc.Tests.StarterSM.exe: Verwaltet (v4.0.30319)" wurde mit Code 0 (0x0) beendet.
Service(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
bei acc.ImExport.Hermes.PriPS.pripsCheckAvailability(pripsCheckAvailability request)
bei acc.ImExport.Hermes.PriPSClient.acc.ImExport.Hermes.PriPS.pripsCheckAvailability(pripsCheckAvailability request) in d:\Entwicklung\acc.Tests.StarterSM\HermesApi\PriPSService.cs:Zeile 2394.
bei acc.ImExport.Hermes.PriPSClient.pripsCheckAvailability() in d:\Entwicklung\acc.Tests.StarterSM\HermesApi\PriPSService.cs:Zeile 2400.
bei acc.Tests.StarterSM.HermesApi.HermesConnector2.ExecuteUeberService() in d:\Entwicklung\acc.Tests.StarterSM\HermesApi\HermesConnector.cs:Zeile 73.



Das ist mein Code:



    public class HermesConnector2
    {
        public static void ExecuteUeberService()
        {
            WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(ImpUser._user, "XXX", "XXX");

            var x = new acc.ImExport.Hermes.PriPSClient(
                GetBinding(),
                new EndpointAddress("https://hermesapi.hlg.de/hermes-api-prips-web/services/v15/PriPS")
            );

            x.ClientCredentials.UserName.UserName = "XXX";
            x.ClientCredentials.UserName.Password = "XXX";
            

            try
            {
                var s = x.pripsCheckAvailability();
                Console.WriteLine(s);
            }
            catch (FaultException<acc.ImExport.Hermes.exceptionItems> ex)
            {
                Console.WriteLine(ex);
            }
            catch (Exception andereEx)
            {
                Console.WriteLine(andereEx);
            }

        }

        public static System.ServiceModel.Channels.Binding GetBinding()
        {
            var s = new BasicHttpBinding();
            s.Name = "HermesConfig";
            
            s.CloseTimeout = new TimeSpan(0, 10, 0);
            s.OpenTimeout = new TimeSpan(0, 10, 0);
            s.ReceiveTimeout = new TimeSpan(0, 10, 0);
            s.SendTimeout = new TimeSpan(0, 10, 0);
            
            s.AllowCookies = false;
            s.BypassProxyOnLocal = false;
            s.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
            s.MaxBufferPoolSize = 65536;
            s.MaxBufferSize = 524288;
            s.MaxReceivedMessageSize = 524288;
            s.TextEncoding = Encoding.GetEncoding("utf-8");
            s.TransferMode = TransferMode.Buffered;
            s.UseDefaultWebProxy = true;
            s.MessageEncoding = WSMessageEncoding.Text;

            s.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas();
            s.ReaderQuotas.MaxDepth = 32;
            s.ReaderQuotas.MaxStringContentLength = 8192;
            s.ReaderQuotas.MaxArrayLength = 16384;
            s.ReaderQuotas.MaxBytesPerRead = 4096;
            s.ReaderQuotas.MaxNameTableCharCount = 16384;

            s.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;

            s.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
            s.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
            s.Security.Transport.Realm = "";

            s.Security.Message.AlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Default;
            s.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

            return s;
        }
    }


Der genannte Fehler tritt bei der Methode x.pripsCheckAvailability() auf. Beim Debuggen ist es schon nicht möglich per Breakpoint in die Methode reinzukommen.
Die Hermes spezifischen Klassen habe ich per svcutil.exe aus einer WDSL Datei eingebunden. Von Hermes habe ich auch entsprechende Zugangsdaten erhalten.

Hat jemand eine Anregung worauf die genannte Fehlermeldung genau hinaus will?

LG
accSharp

Thema: Einloggen auf Webseite in Windows Forms Anwendung eingebetteter Webseite
Am im Forum: Web-Technologien

Ok, vielen Dank für den Hinweis mit Fiddler - das werde ich mir mal näher anschauen. D.h. im Umkehrschluss, dass der Code aus Deiner Sicht zunächst mal inhaltlich korrekt zu sein scheint?

Der Hinweis zur Hermes API ist auch interessant. Ja die Seite von Hermes scheint JavaScript basiert zu sein. Wäre das ein Problem in Bezug auf WebRequests?

Thema: Einloggen auf Webseite in Windows Forms Anwendung eingebetteter Webseite
Am im Forum: Web-Technologien

Hallo zusammen,

ich habe eine Webseite in eine Windows Forms Anwendung eingebettet und möchte mich dort per Click Event einloggen.

Das ist der Code:


        private void Portal_Anmelden(object sender, EventArgs e)
        {
            WebClient wClient = new WebClient();
            wClient.Proxy.Credentials = CredentialCache.DefaultCredentials;
            string strSource = wClient.DownloadString(browser.PROXY_URL);

            byte[] bytes = System.Text.Encoding.ASCII.GetBytes("text=" + Browser.USER + "&password=" + Browser.PWD + "&");

            WebRequest req = System.Net.WebRequest.Create(Browser.WEB_START);
            req.ContentType = "application/x-www-form-urlencoded";
            req.Method = "POST";
            req.ContentLength = bytes.Length;

            Stream os = req.GetRequestStream();
            os.Write(bytes, 0, bytes.Length); 
            os.Close();

            WebResponse resp = req.GetResponse();
            StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
            string a = sr.ReadToEnd().Trim();
            var x = resp.ResponseUri; 

            // Browser.Navigate("about:blank");
            Browser.Navigate(x.AbsolutePath); 
        }

Mein Problem: Das WebResponse Objekt gibt mir nur die Webseite wieder, auf der Login stattfinden soll. Das Objekt Browser wurde aus einer von WebBrowser abgeleiteten Klasse instanziert. Die URL der Webseite lautet: https://sisyr.hlg.de/wps/portal/SISY/Home/WILLKOMMEN/!ut/p/b1/04_Sj9Q1NTc2NzMxNdeP0I_KSyzLTE8syczPS8zRD_TJT09PTfEvLQFJRZnFO5sFhDo6GToaGHg5mRh4uoWZGBu4BBkYuJsBFUQCFRjgAI4GhPSH60ehKnE38jMCKnEKdvRzdjc2CDSCKsBjhR_CvbmRUWnBAemKAKKLYTg!/dl4/d5/L2dBISEvZ0FBIS9nQSEh

Ich freue mich auf Eure Antworten und danke recht herzlich!

Thema: Letztes Windows Update Datum via WMI Services auslesen
Am im Forum: Rund um die Programmierung

Zitat
..praktisch wärs natürlich, wenn Du solche Anforderungen im Startbeitrag nennst ;-)

Das stimmt natürlich, aber mit dem Tipp auf die Registry habe ich nicht gerechnet. Daher wollte ich mein Anliegen nur knapp vorstellen. (-:
Zitat
Wo man genau WMI fragen muss: wahrscheinlich musst Du das selbst durchsuchen.
Denke nicht, dass Dir das jemand aus dem Stehgreif sagen kann.

Das habe ich ja schon recht langwierig und es nicht gefunden, bzw. übersehen. Daher hoffe ich, dass sich jemand in den Klassen auskennt und ggf. eine Idee hat.
Zitat
Microsoft bietet einen Windows Update Agent (WUA), den man sowas auch abfragen kann. Solltet ihr diesen haben, dann würde ich diesen als Schnittstelle verwenden. Ansonsten könnte man zB - wenn vorhanden - auch WSUS fragen.

Deinen Hinweis auf WSUS und WUA werde ich als Plan B mal im Hinterkopf behalten. (-;

Thema: Letztes Windows Update Datum via WMI Services auslesen
Am im Forum: Rund um die Programmierung

Hi Abt,

vielen Dank für Deine Antwort. Das könnte ich natürlich machen. Aber im zweiten Schritt möchte ich innerhalb der Domäne den Update Zeitpunkt eines Remote-Rechners abfragen ungefähr so:


            ConnectionOptions options = new ConnectionOptions();
            options.Authority = "ntdlmdomain:DOMAIN";
            options.Username = "USER";
            options.Password = "PASSWORD";

            ManagementScope scope = new ManagementScope("\\\\RECHNERNAME\\root\\cimv2", options);
            scope.Connect();


Hierzu erstelle ich ein ConnectionsOptions Objekt, welches ich als Parameter in dem ManagementScope Objekt mit übergebe. In diesem Fall habe ich natürlich keine Möglichkeit auf die Registry durchzugreifen, oder?

Thema: Letztes Windows Update Datum via WMI Services auslesen
Am im Forum: Rund um die Programmierung

Hallo zusammen,


mein Ziel ist es in meiner Entwicklungsumgebung den letzten Windows Update Zeitpunkt des verwendeten Rechners abzurufen. Der Zeitpunkt wird unter Systemsteuerung --> Windows Update --> "Updates wurden installiert: XX.XX.XXXX" angegeben.

Ich verwende nun folgenden Code:


[STAThread]
static void Main()
{
    ManagementScope scope = new ManagementScope("\\\\VM195003\\root\\cimv2");
    scope.Connect();

    ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
    ManagementObjectCollection queryCollection = searcher.Get();

    foreach (ManagementObject m in queryCollection)
    {
       Console.WriteLine("Computer Name : {0}", m["csname"]);
       Console.WriteLine("Windows Directory : {0}",m["WindowsDirectory"]);
       Console.WriteLine("Operating System: {0}",m["Caption"]);
       Console.WriteLine("Version: {0}", m["Version"]);
       Console.WriteLine("Manufacturer : {0}",m["Manufacturer"]);
    }
}

In dem funktionierenden Beispiel ruft man lediglich ein paar grundlegende Informationen aus der Klasse Win32_OperatingSystem des Namespace root\\cimv2 zum OS ab.

Um nun zu wissen, welche Klasse und welchen Namespace ich für meine Aufgabe verwenden muss, habe ich den WMI Code Generator zu Rate gezogen. (Microsoft Download Center: WMI Code Creator v1.0)

Dort bekomme ich eine Übersicht über alle Klassen und deren Namespaces sowie deren verfügbare Properties, die ich in dem Code verwenden könnte.

Nun schön und gut. Leider finde ich genau das was ich wissen möchte nicht, denn es gibt ca. 30 Namespaces und der bisher verwendete Namespaces beinhaltet schon 575 Klassen.

Hat daher jemand eine Idee, welche Klasse ich für mein Anwendungsgebiet verwenden kann?

Vielen Dank und viele Grüße!
accredis