Laden...

Forenbeiträge von NewComer4435 Ingesamt 9 Beiträge

30.06.2011 - 16:14 Uhr

Hallo,

bin seid heute morgen am Verzweifeln. Habe ein einfaches Gridview innerhalb eines UpdatePanels. Habe mittels SqlDependency ein Ohr an der Datenbank.

Wenn sich in der DB was ändert, wird das Event ordnungsmäßig gefeuert. Ich lade die neuen Daten und binde sie ans GridView. Aber das Gridview aktualisiert sich nicht. Beim DEbuggen sieht alles perfekt aus. Hier mein kurzer Code


 class SQLDepencyCheck
    {
        public delegate void NewMessage(object sender, EventArgs e);
        public event NewMessage OnNewMessage;

        public void OnNotificationChange(object caller, SqlNotificationEventArgs e)
        {
            if (e.Type.ToString() != "Subscribe")
            {
                InitalizieSQLDepencyForAutraege();
                if (OnNewMessage != null)
                {
                    OnNewMessage(caller, EventArgs.Empty);
                }
            }
        }
        private string ConnString = "XXX";

        public void start()
        {
            SqlDependency.Start(ConnString);
        }

        public void InitalizieSQLDepencyForAutraege()
        {
            SqlConnection oConnection = new SqlConnection(ConnString);
            oConnection.Open();
            try
            {
                SqlCommand oCommand = new SqlCommand("XXX", oConnection);

                SqlDependency oDependency = new SqlDependency(oCommand);
                oDependency.OnChange += new OnChangeEventHandler(OnNotificationChange);
                SqlDataReader objReader = oCommand.ExecuteReader();
                try
                {
                    while (objReader.Read())
                    {
                    }
                }
                finally
                {
                    objReader.Close();
                }
            }
            finally
            {
                oConnection.Close();
            }

        }


und hier lausche ich


 protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
           
            SQLDepencyCheck depency = new SQLDepencyCheck();
            depency.start();
            depency.InitalizieSQLDepencyForAutraege();
            depency.OnNewMessage += new SQLDepencyCheck.NewMessage(depency_OnNewMessage);

            GridView1.DataSource = GetTable();
            GridView1.DataBind();

        }

 void depency_OnNewMessage(object sender, EventArgs e)
        {
            GridView1.DataSource = GetTable(); 
            // wenn ich hier debuge sehe ich die neuen datensätze
            GridView1.DataBind();
        }

 private DataTable GetTable()
        {
            using (SqlDataAdapter adapter = new SqlDataAdapter("XXX","XXX"))
            {
                DataTable table = new DataTable();
                adapter.Fill(table);
                return table;
            }
        }

Tja, laut debuger alles super. Aber leider nichts im Browser zu sehen...

14.12.2010 - 09:14 Uhr

Hallo,

habe da ein kleines aber nerviges Problem.

Habe eine WPF Anwendung geschrieben. Diese lässt sich aber absolut nicht an die Taskleiste in W7 anheften. Dachte es liegt am Icon. Aber habe diverse Icons getestet welche in anderen Anwednungen Ihren Dienst tun. In dieser einen Anwendung geht es aber nicht. Habe auch schon gegoogelt aber nur allgemeine Dinge dazu gefunden. Es geht nur bei DIESEM einen Programm nicht. Ideen wo ich nach suchen könnte?

14.10.2010 - 13:30 Uhr

Hallo,

erstmal danke für deine Mühe,

er kopiert nur die Primär.dll mit. Die Sekundär.dll werden nicht mit kopiert.

14.10.2010 - 13:16 Uhr

Hallo,

zu 2.) Leider nicht, die Primär.dll schmeist immer noch ne exception, dass die sekundär.dll nicht gefunden werden.

zu.1) Habe ein extra Verzeichnsis angelegt und einen Verweispfad dorthin gelegt in dem alle dll sind. Dann die Primär.dll zur sicherheit aus dem gac entfernt und die aus dem Verzeichniss referenziert. Er findet die Primär.dll, schmeißt aber eine Exception, das die Sekundär.dll nicht gefunden werden.

Ich vermute, dass die Primär.dll ein

 
Assembly.Load(Envoirment.CurrentDirectory+"\\sekundär.dll"); 

machen wird.

Demnach bin ich sicherlich machtlos.......

14.10.2010 - 12:55 Uhr

Hey,

leider lassen sich die beiden Sekundär.dlls nicht verweisen und einfügen. Scheinen weder Assemblys noch COM-Komponetnen zu sein. Ich habe nur mir der Primär.dll zu tun. Die Primär.dll arbeit dann mit den Sekundär.dlls. Ich kann die dlls nicht verändern, da sie von einem Drittanbieter sind.

Er findet sie auch nicht, wenn sie im bin Verzeichniss liegen.

14.10.2010 - 11:38 Uhr

Die dlls in WPF/Forms Anwendungen mitzuschleppen ist ja "ertragbar". Ich weiß aber absolut nicht wie ich es mit dem IIS für asp.net seiten machen soll.

Ich weiß nicht, wo ich die sekundär.dlls hinpacken muss, damit meine Primär.dll aus dem GAC auf die sekundär.dll zugreifen kann?

Was Assembly probing betrifft, belese mich gerade diesbezüglich, habe aber noch keinen aha effekt bzw. habe ich noch nicht kapiert, was es damit auf sich hat und somit eventuell eine Lösung meines Problems sein könnte.

14.10.2010 - 11:07 Uhr

Hallo,

hoffe bin hier im Richtigen Unterforum.

Habe folgendes Problem. Ich benötige für mein Projekt eine dll (ich nenne sie mal Primär.dll).

Diese habe ich als Verweis erfolgreich hinzugefügt. Diese Primär.dll benötigt aber 2 weiter Dll Dateien um zu funktionieren. Heißt, ohne die Sekundär.dlls läuft die Primär.dll nicht.

Ich selber benötige nur Funktione der Primär.dll für mehrere Anwendungen auf einem Server. Momentan habe ich zwar die Primär.dll im GAC hinzugefügt, klappt auch Super, allerdings müssen die 2 Sekundär.dll´s immer noch im gleichen Verzeichniss wie die EXE liegen. Funktioniert, ist aber nicht schön. Die Sekundären.dlls haben keine starken Namen und lassen sich weder im GAC hinzufügen noch hilft es einen Verweispfad auf Ihrern Speicherort dem Projekt hinzuzufügen.

Da ich jetzt die aber Primär.dll auch für aps.net (Sharepoint) benötigt, komme ich GAR nicht mehr weiter, da der Primär.dll immer die beiden Sekundär.dlls fehlen.

Hat jemand Ideen wie ich die 3 DLL Zentral auf dem Server "ablegen" kann, so dass ich diese von "überall" aus nutzen kann.

07.09.2010 - 13:19 Uhr

So, gelöst.
So habe ich es jetzt gemacht, falls es jemanden interessiert!



            RijndaelManaged rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.Mode = CipherMode.ECB;
            rijndaelCipher.Padding = PaddingMode.PKCS7;
            rijndaelCipher.KeySize = 128;
            rijndaelCipher.BlockSize = 128;
            byte[] encryptedData = HexNachBytes(text);
            byte[] pwdBytes = new byte[] {x.x.x.x.x.x.};
            byte[] keyBytes = new byte[16];
            int len = pwdBytes.Length;
            if (len > keyBytes.Length) len = keyBytes.Length;
            System.Array.Copy(pwdBytes, keyBytes, len);

            rijndaelCipher.Key = keyBytes;

            rijndaelCipher.IV = keyBytes;

            ICryptoTransform transform = rijndaelCipher.CreateDecryptor();

            byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);

            return Encoding.UTF8.GetString(plainText);

31.08.2010 - 13:32 Uhr

Hallo,

verzweifle langsam. Versuche schon seid Tagen eine JAVA AES entschlüsselung nach C# zu konvertieren. Leider passt das Ergebniss nicht bzw bekomme ich gar keins. Hoffe mir kann jemand etwas helfen.

Der Java Code sieht auf das wichtigeste gestaucht so aus. Funktioniert auch.


import java.io.PrintStream;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class main {

	public static final byte[] CRYPTO_RAW_AES_128 = { x,x,x,x,x };

	public static void main(String[] args) {
				 System.out.println(verschluesseleMitKey("E99706779C073359CC6EFD750A0B980B"));

	}
	public static String verschluesseleMitKey(String paramString) {
	    if ((paramString == null) || (paramString.length() == 0))
	      return "";
	    try {
	      String str = "AES";

	      byte[] arrayOfByte1 = CRYPTO_RAW_AES_128;

	      SecretKeySpec localSecretKeySpec = new SecretKeySpec(arrayOfByte1, str);

	      Cipher localCipher = Cipher.getInstance(str);

	      localCipher.init(2, localSecretKeySpec);
	      byte[] arrayOfByte3 = localCipher.doFinal(HexNachBytes(paramString));

	      return wandleBytesNachString(arrayOfByte3, 0, arrayOfByte3.length);
	    }
	    catch (Exception localException) {
	      System.out.println(localException);
	    }
	    return "";
	  }
	
	  public static String wandleBytesNachString(byte[] bya, int iStart, int iLaenge) {
	    char[] caString = new char[iLaenge];
	    for (int i = 0; i < iLaenge; ++i) {
	      byte by = bya[(i + iStart)];
	      if (by < 0)
	        caString[i] = (char)(by + 256);
	      else
	        caString[i] = (char)by;
	    }
	    return new String(caString);
	  }

	  public static byte[] HexNachBytes(String paramString)
	  {
	    paramString = paramString.toUpperCase();

	    if (paramString.length() % 2 == 1) {
	      paramString = "0" + paramString;
	    }
	    int i = paramString.length() / 2;
	    byte[] arrayOfByte = new byte[i];
	    for (int j = 0; j < i; ++j) {
	      arrayOfByte[j] = (byte)(HexCharNachHalbByte(paramString.charAt(2 * j)) << 4 | HexCharNachHalbByte(paramString.charAt(2 * j + 1)));
	    }

	    return arrayOfByte;
	  }

	  public static int HexCharNachHalbByte(int paramInt) {
	    if (paramInt >= 65)
	      return paramInt - 65 + 10;
	    return paramInt - 48;
	  }

}

Meine ganzen C# Versuche kann ich gar nicht alle Posten was ich bisher getestet habe. Der letzte jedenfalls sieht so aus


 public static string DecryptString(string cipherText)
        {
            byte[] key = new byte[] {x,x,x,x,x,x};
            AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
            byte[] cipherTextBytesForDecrypt = Encoding.UTF8.GetBytes(cipherText);
           //byte[] cipherTextBytesForDecrypt =HexNachBytes(cipherText);
            ICryptoTransform cryptoDecryptor = aesProvider.CreateDecryptor(key, key);

            System.IO.MemoryStream memStreamEncryptData = new System.IO.MemoryStream(cipherTextBytesForDecrypt);
            CryptoStream rStream = new CryptoStream(memStreamEncryptData, cryptoDecryptor, CryptoStreamMode.Read);
            byte[] plainTextBytes = new byte[cipherTextBytesForDecrypt.Length];
            int decryptedByteCount = rStream.Read(plainTextBytes, 0, plainTextBytes.Length);
            
            string plainTexat = wandleBytesNachString(plainTextBytes, 0, plainTextBytes.Length);
            memStreamEncryptData.Close();
            rStream.Close();
            return plainTexat;
        }

Leider bekomme ich dort immer eine Exception bei rStream.Read()
"Die Zeichenabstände sind ungültig und können nicht entfernt werden."