Zum Inhalt springen

jasso

Mitglieder
  • Gesamte Inhalte

    562
  • Benutzer seit

  • Letzter Besuch

Beiträge von jasso

  1. @arlegermi:  "nur Klassen" würde mir vollkommen reichen.
    Leider funktioniert es damit ebenfalls nicht.
    Mit ...

        public interface IBlub<T> where T : class
        {
            void InsertOrUpdate(T? givenDBElement = null);
        }

    … bekomme lediglich vom Compiler die Meldung:

    Zitat

    Der Typ "T" darf keine NULL-Werte zulassen, wenn er als T-Parameter im generischen Typ oder in der generischen Methode "Nullable<T>" verwendet werden soll.

    @KeeperOfCoffe: Danke fürs nachgoogeln. Die Ergebnisse habe ich bereits gefunden. Helfen mir nur in meinem konkreten Fall leider nicht weiter.

    Danke
    LG
    Jasso

  2. Hallo,

    ich möchte aktuell in einer Typisierten Klasse (bzw. erstmal im Interface) einen Typ als Nullable definieren.

    Geht das überhaupt? Ich kann leider nichts dazu finden.

        public interface IBaseElement<T>
        {
            void InsertOrUpdate(T? givenDBElement = null);
        }

    ist leider nicht erlaubt da T per se mal nicht nullable ist.

    Ich hätte auch versucht etwas wie 

        public interface IBaseElement<T> where T : Nullable
        {
            void InsertOrUpdate(T? givenDBElement = null);
        }

    zu verwenden, aber auch das akzeptiert mir der Compiler nicht.

    Danke
    LG
    Jasso

  3. Vielen Dank,

    alle Hinweise waren sehr Hilfreich und haben mich letztendlich ne Lösung finden lassen ☺️.
    Ich brauche den AutoMapper weil das Mapping nur ein teil eines sehr verschachtelten Mappings ist.

    Allerdings funktioniert eine Map

    CreateMap<List<PriceValue>, Dictionary<CurrencyModel, decimal>>()
      .ConvertUsing<PriceConverter>()
      ;

    die dann wiederum

        public class PriceConverter : ITypeConverter<List<PriceValue>, Dictionary<CurrencyModel, decimal>>
        {
            public Dictionary<CurrencyModel, decimal> Convert(List<PriceValue> source, Dictionary<CurrencyModel, decimal> destination, ResolutionContext context)
            {
                if(source == null)
                {
                    return new Dictionary<CurrencyModel, decimal>();
                }
                else
                { 
                    return source.ToDictionary(keySelector: x => Mapper.Map<CurrencyModel>(x.Currency), elementSelector: x => x.Value);
                }
            }
        }

    verwendet.

    (Ist ein wenig anders als das vorgestellte Beispiel, aber darauf sollt es final hinauslaufen)

    LG
    Jasso

  4. Hallo Zusammen,

    ich hänge hier grad mit dem Automapper ein wenig fest.

    Über das EF bekomme ich Elemente die ich dann auf meine Models mappen möchte.
    Und zwar versuche ich von einer Liste von Objekten in ein Dictionary zu mappen.

    Im einfachsten Fall versuche ich mein Mapping folgendermaßen:

    CreateMap<PriceValue, KeyValuePair<Guid, PriceValue>>()
      .ForMember(dest => dest.Key, opt => opt.MapFrom(src => src.CurrencyID))
      .ForMember(dest => dest.Value, opt => opt.MapFrom(src => src))
      ;

    meine Quelldaten sind eine

    List<PriceValue>

    und als Ziel hätte ich

    Dictionary<Guid, PriceValue>

    Ich bekomme auch keine Fehlermeldung dass ein Mapping fehlen würde, also nehme ich an dass das Mapping an sich der richtige Ansatz ist.
    Nur leider ist die Ergebnisliste leer (die Quellliste natürlich nicht).

    hat jemand eine Ahnung was ich beim Mapping in mein Dictionary falsch mache?

    Vielen Dank und beste Grüße

    Jasso

  5. Es geht dabei nicht darum sich gegen unser AD zu authentifizieren, sondern unseren Kunden die Möglichkeit zu geben ihre AD-Credentials in unser System zu synchronisieren um sich an unserer Webapplikation mit deren AD-Accounts zu authentifizieren.

    Eine gewisse Sync-Dauer ist dabei durchaus ok.

  6. Hi Mttkrb,

    da würde ich Dir an sich zustimmen. Solange ich die Authentifizierung im System durchführen müsste oder davon ausgehen könnte dass das System immer zuverlässig erreichbar ist würde ich die Authentifizierung immer direkt gegen das AD fahren.

    Da wir die Authentifizierung allerdings lediglich mit den selben Credentials gegen ein Drittsystem (tatsächlich Physikalisch getrennt) durchführen und sicherstellen wollen dass die User sich immer, auch wenn das AD-System grad, aus welchen Gründen auch immer, nicht erreichbar sein sollte, authentifizieren kann, machen wir den Sync der Daten.

    Das Aktuellhalten der Daten ist dann das nächste Problem um das ich mich zu kümmern habe ;).

    LG
    jasso

  7. Hallo zusammen,

    nur der Vollständigkeit halber.
    Es gibt wohl keinen "offiziellen" Weg, allerdings hab ich mir ein PowerShell-Script gebastelt mit dem ich das AD-DB-File kopieren und auslesen kann. Daraus kann man auch die PW-Hashes ziehen.

    # Paths
    $basePath = Join-Path "C:\ReadADInfo\" $(get-date -f yyyy-dd-MM_HHmmss);
    If(!(test-path $basePath))
    {
        New-Item -ItemType Directory -Force -Path $basePath;
    }
    $shadowCopyPath = Join-Path $basePath "shadowcopy";
    $ADDBFilePath = (Join-Path $basePath "ntds.dit");
    $SysKeyPath = (Join-Path $basePath "SYS");
    
    #Global Functions
    function Write-MyHost {
        param ([string]$output)
        #Constants
        $preOutput = "---- ";
        $postOutput = " ----";
        Write-Host ($preOutput + $output + $postOutput);
    }
    
    # copy ntds.dit
    Write-MyHost "copy ntds.dit";
    $s1 = (Get-WmiObject -List Win32_ShadowCopy).Create("C:\", "ClientAccessible");
    $s2 = Get-WmiObject Win32_ShadowCopy | Where-Object { $_.ID -eq $s1.ShadowID };
    $d  = $s2.DeviceObject + "\";
    cmd /c mklink /d $shadowCopyPath "$d";
    copy (Join-Path $shadowCopyPath "Windows\NTDS\ntds.dit") $ADDBFilePath;
    
    # remove linked directory
    Write-MyHost "remove linked directory";
    fsutil reparsepoint delete $shadowCopyPath;
    rmdir $shadowCopyPath;
    $IDToDelete = $s1.ShadowID.ToString();
    $IDToDelete = """$IDToDelete""";
    vssadmin delete shadows /shadow=$IDToDelete /Quiet;
    
    # cleanup DB-copy
    Write-MyHost "cleanup DB-copy";
    ESENTUTL /p $ADDBFilePath /!10240 /8 /o;
    
    # copy SYS Key
    Write-MyHost "copy SYS Key";
    reg SAVE HKLM\SYSTEM $SysKeyPath;
    
    # read SYS Key
    Write-MyHost "read SYS Key";
    $key = Get-BootKey -SystemHiveFilePath $SysKeyPath;
    
    # Get Accounts from DB-copy
    Write-MyHost "Get Accounts from DB-copy";
    $ADAccounts = GET-ADDBAccount -All -BootKey $key -DBPath $ADDBFilePath;
    
    # Search for given User
    Write-MyHost "User";
    for ($i=0; $i -lt $ADAccounts.length; $i++)
    {
        if($ADAccounts[$i].SamAccountType -eq "User")
        {
            Write-Host ("User: " + $ADAccounts[$i].SamAccountName);
            if($ADAccounts[$i].NTHash -ne $null)
            {
                Write-Host ("PWHash: " + (($ADAccounts[$i].NTHash|ForEach-Object ToString X2) -join '').ToLower());
            }
            Write-Host "";
        }
    }

    Die Hashes werden übrigens für den späteren Vergleich MD4(UTF-16-LE(password)) gespeichert. MD4 ist in .NET nicht per Default im Encoding enthalten. Habe aber hier eine brauchbare Klasse gefunden.

    LG
    jasso

  8. Hallo zusammen,

    Ich versuche gerade PW-Hashes aus einem ActiveDirectory auszulesen. Vorzugsweise würde ich das in C# implementieren, leider hilft mir die System.DirectoryServices.AccountManagement-Klasse nicht wirklich weiter.

    Ziel ist es in einem Fremdsystem gegen AD-Accounts zu authentifizieren (ohne jedes mal eine Verbindung zum Ad-Server herstellen zu müssen um die Anmeldung zu verifizieren). Ich möchte also Usernamen und PW-Hashes in einem drittsystem speichern um dort die Anmeldung selbst machen zu können.

    Ich möchte also nicht die Plain-PWs auslesen (das wird ohnehin nicht möglich sein da diese ja überhaupt nicht gespeichert werden) sondern lediglich die Hash-Werte zu den Passwörtern abzugreifen.

    Leider kann ich dazu nichts wirklich hilfreiches finden.

    Hat sowas schonmal jemand gemacht?

    Danke
    LG
    jasso

  9. Hallo Leute,

    ich habe ein kleines Problem(chen) mit einer ASP.NET-Page an welche ich Dateinamen als Parameter übergeben will.

    folgendes kleines Script (VB):

                Dim ausgabe As String = ""
    
                For Each key As String In Request.Params.Keys
    
                    ausgabe &= key & "=" & Request.Params(key) & "<br>"
    
                Next
    
                parameter.InnerHtml = ausgabe
    
    

    gibt mir sämtliche Parameter aus. Sobald ein Parameter im Wert einen Umlaut enthält (äöü) wird mir die ganze Seite nicht mehr ausgeführt und ich bekomme die Meldung "The page cannot be displayed". Der Fehler kommt auch wenn ich den Parameter Urlencoded übergebe. Kennt das noch jemand? Bin mir auch nicht ganz sicher ob ich hier richtig bin da es sich ebensogut um eine Servereinstellung handeln könnte (IIS6/.NET 2.0.50727).

    lg

    jasso

  10. doch ... durchaus verständlich. hab mir sowas ähnliches auch schon gedacht nur noch nicht recht gewusst wie ich nen complexType selber zusammenschraube ;)

    du bist jetzt mein persönlicher hero-des-monats^^

    danke erstmal.

    da ich jetzt den Testservice erfolgreich ansprechen kann werd ich mich mal an den externen wagen. Ich hoffe ich darf dich auch weiterhin mit Fragen hierzu löchern falls ich z.B. mit der Authentifizierung nicht klar komme ;)

    lg

    jasso

  11. Habe jetzt "soap.wsdl_cache_enabled=0" in der PHP.ini gesetzt um den cache mal auszuschließen.

    bis auf die sache mit "&'.time()" funktioniert der Testcode auch wunderbar

    <?PHP 
    error_reporting(E_ALL);
    ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache...
    ini_set("display_errors", "1"); // errors on...
    ini_set("memory_limit","512M");

    try
    {
    $soapy = new SoapClient('https://scripts.portal-anmeldung.de/ws1/service1.asmx?WSDL', array(
    "trace" => 1,
    )); //
    echo "<font color=\"green\"><br />ShowAllFunctions:<br />";
    $result = $soapy->__getFunctions();
    echo "<pre>", var_dump($result) , "</pre>";
    echo "</font><br /><br />";

    try
    {
    $result = $soapy->__call("Eeeeeeeeechooooo", array("blub"));
    echo "<pre>", var_dump($result) , "</pre>";

    echo "<font color=\"blue\"><br />LastRequest:<br />";
    $result = $soapy->__getLastRequest();
    echo str_replace("><", "><br><", htmlentities($result));
    echo "</font><br><br>";
    echo "<font color=\"blue\"><br />LastResponse:<br />";
    $result = $soapy->__getLastResponse();
    echo str_replace("><", "><br><", htmlentities($result));
    echo "</font><br><br>";
    }
    catch (SoapFault $e) // Wenn der Call einen Error wirft
    {
    $result = $soapy->__getLastRequest();
    echo str_replace("><", "><br><", htmlentities($result));

    echo "<font color=\"red\"><br />Soapfault:<br />";
    echo "<pre>", var_dump($e) , "</pre>";
    }

    }
    catch (Exception $e)
    {
    var_dump($e);
    }
    ?>[/PHP]

    Er gibt mir schön die vorhandenen Funktionen aus und ich kann die Funktion allem anschein nach auch aufrufen. Nur kommt halt nach wie vor kein Ergebnis zurück:

    [color=SeaGreen]ShowAllFunctions:

    array(2) {

    [0]=>

    string(71) "EeeeeeeeechoooooResponse Eeeeeeeeechooooo(Eeeeeeeeechooooo $parameters)"

    [1]=>

    string(53) "HelloWorldResponse HelloWorld(HelloWorld $parameters)"

    }[/color]

    object(stdClass)#2 (0) {

    }

    [color=Blue]LastRequest:

    <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">

    <SOAP-ENV:Body>

    <ns1:Eeeeeeeeechooooo/>

    </SOAP-ENV:Body>

    </SOAP-ENV:Envelope>

    LastResponse:

    <?xml version="1.0" encoding="utf-8"?>

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance'>http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <soap:Body>

    <EeeeeeeeechoooooResponse xmlns="http://tempuri.org/" />

    </soap:Body>

    </soap:Envelope>[/color]

    Das Problem scheint hier zu sein dass er mir im Request den Parameter "schluckt". Rufe ich die HelloWorld-Funktion auf wird die Rückgabe korrekt serialisiert (also funktioniert das schonmal wunderbar). Nur wie gesagt die Parameter gehen irgendwo verloren.

    lg

    jasso

  12. Sorry für doppelpost (edit geht nicht mehr):

    anzufügen wäre hier evtl dass ich:

    <?PHP

    error_reporting(E_ALL);
    ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache...
    ini_set("display_errors", "1"); // errors on...
    try
    {
    echo "1<br>";
    $client = new SoapClient('https://scripts.portal-anmeldung.de/ws1/service1.asmx?WSDL', array('trace' => 1));
    echo "2<br>";
    $result = $client->Eeeeeeeeechooooo('test');
    echo "3<br>";
    echo "ANFRAGE:<br>" . $client->__getLastRequest() . "<br>";
    echo "4<br>";
    var_dump($result);
    }
    catch (Exception $e)
    {
    var_dump($e);
    }

    ?>[/PHP]

    bereits probiert habe und keine Ergebnisse bekomme.

    Ergebnisseite sieht folgendermaßen aus:

    1

    2

    3

    ANFRAGE:

    4

    object(stdClass)#2 (0) { }

  13. :upps Errors auszugeben sollte eigentlich der erste gedanke sein (ja war denn schon Freitag ...)

    Hat mir auf jeden fall schonmal sehr weitergeholfen. Das Problem war einfach das fehlende openssl.

    Soweit funktioniert das nun auch.

    Als nächstes bekomme ich vom Webservice irgendwie kein Ergebnis zurück (Mal davon abgesehen dass eine Class 'SoapException' allem anschein nach ncht gefunden werden kann ... macht aber nix mit Exception funktionierts).

    Kann ich mir aus der SoapClient-Klasse die Gesendete und erhaltene XML auslesen?

    lg

    jasso

  14. PHP-Version

    PHP Version 5.0.4

    mein Code sieht jetzt so aus:

    <?php 
    echo "1<br>";
    $client = new SoapClient('https://scripts.portal-anmeldung.de/ws1/service1.asmx?WSDL');
    echo "2<br>";
    $result = $client->Eeeeeeeeechooooo('de_en');
    echo "3<br>";
    echo $result;
    ?>[/PHP]

    leider hab ich das Problem immer noch. Er bricht in der selben Zeile ab.

    Find ich aber erfreulich wenn jemand damit Erfahrung hat ;)

    lg

    jasso

  15. Hallo Leute,

    ich soll einen Webservice per PHP ansprechen und krieg das irgendwie nicht gebacken.

    alle Beispiele die ich per Google finden laufen erstmal auf:

    $client = new SoapClient('...');

    raus.

    soap ist in meiner PHP.ini aktiviert

    soap

    Soap Client enabled

    Soap Server enabled

    Directive Local Value Master Value

    soap.wsdl_cache_dir /tmp /tmp

    soap.wsdl_cache_enabled 1 1

    soap.wsdl_cache_ttl 86400 86400

    mein kompletter Testcode sieht momentan so aus:

    <?php 
    echo "1<br>";
    $client = new SoapClient('https://scripts.portal-anmeldung.de/ws1/service1.asmx');
    echo "2<br>";
    $result = $client->Eeeeeeeeechooooo('nudelsuppe');
    echo "3<br>";
    echo $result;
    ?> [/PHP]

    wobei https://scripts.portal-anmeldung.de/ws1/service1.asmx ein eigener kleiner testwebservice von mir ist.

    nur leider bricht das ganze schon beim

    [PHP]new SoapClient(..

    ab.

    Kann mir hier bitte jemand weiterhelfen?

    danke

    lg

    jasso

  16. Hi Leute,

    ich habe einen Englischen IIS 6.0 mit PHP 5.0.

    Wenn ich jetzt einer PHP-testseite einen Umlaut im Parameter übergebe bekomme ich den Fehler "The page cannot be displayed". auch Urlencoded kann der Umlaut nicht übergeben werden.

    weiß jemand woran das liegen könnte?

    danke

    lg

    jasso

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...