Laden...
Avatar #avatar-2451.jpg
HeinzTomato myCSharp.de - Member
Softwareentwickler Hamburg Dabei seit 14.04.2005 345 Beiträge
Benutzerbeschreibung

Forenbeiträge von HeinzTomato Ingesamt 345 Beiträge

13.09.2011 - 16:24 Uhr

Ich habe es mittlerweile selbst gelöst: Ich gebe das Image als Base64 aus. Das geht im Firefox und ab IE7.

13.09.2011 - 15:23 Uhr

Hallo allerseits. Konkret geht es hier um SharePoint, ich finde aber, hier ist das Thema besser aufgehoben, als in Office-Technologien.

Ich möchte dynamisch Thumbnails von Bildern erstellen und diese dann im Cache ablegen, damit dies beim nächsten Mal nicht mehr notwendig ist.

Dies mache ich (stark verkürzt) so:

 string presetName = string.Format("{0}{1}", preset, filename);

            if (HttpContext.Current.Cache[presetName] == null)
            {
                System.Drawing.Image resizedImage = ResizeImage(GetImage(bigFileName), preset.Width, preset.Height, preset.AbsoluteValue);
                HttpContext.Current.Cache.Insert(presetName, resizedImage, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromDays(60));
            }

Das geht auch so weit. Allerdings möchte ich am Ende nicht das Image-Objekt per Code in ein Image-Objekt übergeben, sondern ich möchte, da es viele Stellen gibt, die aufs ThumbNail zugreifen eigentlich im Code weiterhin einen einfachen "img src="xxxx" verwenden, wobei dann auf den Cache zugegriffen werden soll.

Gibt es da evtl. einfache naming conventions in Sharepoint, dass dann automatisch der richtige Wert gezogen wird?

12.09.2011 - 17:37 Uhr

Hallo allerseits. Ich habe einige Webparts mit Properties, die Sharepoint sich ja automatisch "merkt", d.h. ich kann sie in der PropertyPane bearbeiten, speichern und beim nächsten PageLoad sind sie auch noch da:

  [ToolboxItemAttribute(false)]
    public class MTContact : Microsoft.SharePoint.WebPartPages.WebPart
    {
        private int _leftContactId;

        public int LeftContactId
        {
            get { return _leftContactId; }
            set { _leftContactId = value; }
        }

Mach ich also ein Reload auf der Seite ist "LeftContactId" noch immer mit meinem Wert gefüllt.

Versuche ich das Gleiche aber mit einer Liste oder Array:


private List<int> _allContacts;
public List<int> AllContacts {
get { return _allContacts; }
set { _allContacts=value; }
}

private int[] _allContactsArray;
public int[] AllContactsArray {
get { return _allContactsArray;}
set { _allContactsArray=value; }
}
}

"vergisst" Sharepoint meine Einstellungen. Ist das eine Sicherheitseinstellung oder muss ich sowas wie Serializable hinzufügen?

26.08.2011 - 17:47 Uhr

Hey. Danke für die Arbeit die Du Dir gemacht hast.

Werde da mal ein bisschen rumdoktorn und austesten. Schonmal ein schönes Wochenende.

26.08.2011 - 17:19 Uhr

Du meinst sowas wie:

DELETE FROM clearing_banktransfer WHERE id_bankTransfer IN 
  (SELECT cb.id_banktransfer FROM clearing_banktransfer cb
					inner join clearing_debitor_invoice cdi on cdi.id = cb.id_clearing
					Inner join clearing_debitor cd on cd.id = cdi.id_clearing_debitor
					WHERE cd.id_clearing=@clearingId
)

?

Profiler ging noch nicht. Der Fehler ist leider nur im Live-System und ich muss warten, bis der Kunde diese Funktion wieder benötigt.

Ich könnte natürlich das ganze mit einem anschließenden Rollback testen, aber im Backend passieren dabei noch viele andere Aktionen (z.B. im filesystem), so dass ich das nicht riskieren will

26.08.2011 - 16:43 Uhr

Danke für Eure Anregungen, werde das mal durchtesten. CURSOR hatte ich sogar mal drin, ihn aber - in der Hoffnung das flotter zu kriegen - durch den Loop ersetzt.

Hat zwar nix gebracht, ist aber auch nicht langsamer geworden

26.08.2011 - 14:17 Uhr

verwendetes Datenbanksystem: MSSQL

Hallo allerseits. Vorab möchte ich schicken, dass ich schon ne ganze Weile mit LinQ to SQL arbeite, Fehler der Art "Du verbindest Dich falsch" etc. wohl eher nicht der Grund sind. Es gibt auch 1000 andere Procedures, die das Problem nicht haben.

Nun aber zum eigentlichen Problem:
Ich habe eine Stored Procedure, die relativ viele interne Selects, eine Schleife und Aggregatfunktionen hat etc. (Das sollte aber eigentlich unerheblich sein für mein Problem) :

ALTER PROCEDURE [dbo].[DeleteBankTransfersFromClearing]
(
	@clearingId int
)
AS BEGIN
	DECLARE @isTrans	bit;
		
	IF @@TRANCOUNT>0	
		SET @isTrans = 1;
	ELSE 
		SET @isTrans = 0;

	BEGIN TRY
		IF @isTrans=0 
		BEGIN TRANSACTION
			--] Ab hier individueller Code:	[--
			
			DECLARE
			@loopReturnCode		int,
			@loopNextRowId		int,
			@loopCurrentRowId	int,
			@loopControl		int,
			@banktransferId		int
			
		
			--init
			SELECT @loopControl = 1
			SELECT @loopNextRowId = MIN(cb.id_banktransfer) FROM clearing_banktransfer cb
					inner join clearing_debitor_invoice cdi on cdi.id = cb.id_clearing
					Inner join clearing_debitor cd on cd.id = cdi.id_clearing_debitor
					WHERE cd.id_clearing=@clearingId
			
			IF ISNULL(@loopNextRowId,0) = 0
			BEGIN
				SELECT 'No data!'
				RETURN ;
			END
			
			-- get first row
			SELECT @loopCurrentRowId = cb.id_banktransfer
					FROM clearing_banktransfer cb
					WHERE cb.id_bankTransfer = @loopNextRowId
			
			-- Löschen hier
			WHILE @loopControl = 1
			BEGIN
				-- hier banktransferobjekte löschen (vorerst auskommentiert)
				DELETE FROM clearing_banktransfer WHERE id_bankTransfer = @loopCurrentRowId
				DELETE FROM bankTransfer WHERE id = @loopCurrentRowId; 
				-- für test select statt löschen
				--SELECT t.id_bankTransfer AS BT_ID, t.id_clearing AS CL_ID
				-- FROM clearing_banktransfer AS t
				-- WHERE t.id_bankTransfer = @loopCurrentRowId
				
				-- reset loop vars
				SELECT @loopNextRowId = NULL
				-- get next row
				SELECT @loopNextRowId = MIN(cb.id_banktransfer)
					FROM clearing_banktransfer cb
					WHERE 
					cb.id_bankTransfer > @loopCurrentRowId
				IF ISNULL(@loopNextRowId,0) = 0
				BEGIN
					BREAK
				END
				-- get next row
				SELECT @loopCurrentRowId = cb.id_banktransfer
					FROM clearing_banktransfer cb
					WHERE cb.id_bankTransfer = @loopNextRowId
				
			END
			RETURN			

			--] Ende individueller Code [--
		IF @isTrans=0 		
		COMMIT TRANSACTION
		return 0

	END TRY
	BEGIN CATCH
		EXECUTE GetErrorInfo;
		IF @isTrans=0
		ROLLBACK TRANSACTION
		RETURN (-1)*ERROR_NUMBER()	-- negative Errorcodes
	END CATCH
END


Diese procedure wird dann über LinQ verknüpft:

 private int DeleteBanktransfersFromClearing(DL.LQImpersonalObjectsDataContext datacontext)
        {
            datacontext = datacontext ?? new DL.LQImpersonalObjectsDataContext();
            int errCode = (int)ErrorCodes.NO_ERROR;

            foreach (DL.DeleteBankTransfersFromClearingResult res in datacontext.DeleteBankTransfersFromClearing(_id))
            {
                if (res.ErrorLine.HasValue && res.ErrorLine.Value > 0)
                {
                    return (int)ErrorCodes.DATABASE_ERROR;
                }
            }

            if (errCode >= (int)ErrorCodes.NO_ERROR)
            {
                return this.CreateLog(null, ActionTypes.DELETE, "Löschen Banktransfers erfolgreich", string.Format("CLEARING {0} ", this._id));
            }

            return errCode;
        }

Führe ich die Procedure direkt auf der Datenbank aus, dauert es <1 sekunde, bis die Ausführung abgeschlossen ist. Rufe ich die gleiche procedure über die Methode auf, kommt nach 30 Sekunden ein Datenbank-Timeout. Natürlich mit den gleichen Parametern.

Dabei ist es auch unerheblich, ob ich im Code eine Transaktion erstelle oder die Prozedur ohne Transaktion aufrufe.

Um ehrlich zu sein: Sollte mir jemand dieses Verhalten beschreiben würde ich ihm kein Wort glauben. Aber meine Kollegen kämpfen da jetzt auch schon Monate mit und haben letztendlich ihre letzte Hoffnung in mich gesetzt, die ich nun an Euch weiterleite 😃

25.07.2011 - 13:24 Uhr

In der Designer - Ansicht hast du die Events, in der Codebehind - Ansicht hast du die Events nicht in der Anzeige.

Nö. Ich habs in beiden schon gesehen, bzw. nicht gesehn

runat="server"

Vieleicht liegt es daran

Eher unwahrscheinlich. Schließlich handelt es sich um SERVER-Events. Das wäre relativ witzlos, wenn das mit runat="server" nicht gehen würde.

22.07.2011 - 14:53 Uhr

Hallo allerseits.

Wenn ich in einer ASPX-Quellcode-Datei arbeite und ein ASP-Element bearbeite habe ich hin und wieder in den Properties auch die Events, andere Male jedoch nicht. Ich bin bisher nicht dahinter gekommen, was verursacht, dass die Events gezeigt werden oder eben auch nicht:

(Markiert ist ein <asp:Button /> - Control, ich verwende VS2010

Woran liegt es, dass mal Events angeboten werden, mal nicht?

29.06.2011 - 11:48 Uhr

Konkret geht es hier um einen SharePoint-Webpart, aber das Problem ist eher ein generelles ASPX-Problem:

Ich möchte ein Control dynamisch einbinden:

  private const string _ascxPath = @"~/_CONTROLTEMPLATES/WAS.WPs.RTContacts/RTContacts/RTContactsUserControl.ascx";

        protected override void CreateChildControls()
        {
            Control control = Page.LoadControl(_ascxPath);
            Controls.Add(control);

            Control anotherControl = new RTContactsUserControl();
        }

Während in der ersten Variante alles toll ist (control) hat die zweite Variante (anotherControl) nicht die untercontrols, die eigentlich an dem Control hängen; anotherControl.Controls.Count=0, während control.Controls.Count>0 ist.

Woran liegts?

05.05.2011 - 17:58 Uhr

Danke für die zahlreichen Antworten. Ist also wohl eher "Religionssache"

27.04.2011 - 11:14 Uhr

Hallo allerseits.

Ich habe für mich irgendwie noch keine klare Linie gefunden, wann ich beim einem Winform Daten dynamisch Fülle (z.B. Inhalte von Comoboxen, Datagrids) oder auch programmatisch erzeugte Tabs im Tabcontrol:

Macht Ihr dies überlicherweise im Konstruktor direkt nach "InitializeComponent" oder verwendet ihr das Form_Load()-Event um z.B. ein beim Aufruf des Fensters DataGrid zu füllen?

Warum?

08.03.2011 - 09:41 Uhr

Ich weiß, alle werden nun rufen: "TUS NICHT":D , aber ich entwickle ja weiterhin hauptsächlich in C#, möchte aber auch gerne für Android-Tablets entwickeln. Und MonoDroid ist mir erstens zu teuer fürs reinschnuppern und auch ja noch im Alpha-Status.

Hat von Euch C#-Entwicklern schonmal jemand den Tellerrand überblickt? Ist es eine große Umstellung?
Arbeitet jemand von Euch parallel mit C# und Java?

Kann man das SDK mit J# benutzen?

Danke schonmal

23.11.2010 - 00:35 Uhr

Es fehlte ein Page.DataBind im PageLoad. %-)

22.11.2010 - 22:37 Uhr

Hallo allerseits. Ich habe eigentlich eine ganz einfache Anforderung. Meine mittlerweile komplett bereinigte ASPX-Seite sieht wie folgt aus:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ReifenDetails.aspx.cs" Inherits="ReifenDetails" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:Label ID="Label1" Font-Names="Verdana" runat="server" SkinID="mainSkin" Text="<%# GetText() %>"  /><br />
   </form>
</body>
</html>

In der zugehörigen CS gibt es folgende Methode:

 protected string GetText()
    {
        return "HUHU";
    }

Mein Problem ist nun, dass die Methode GetText() anscheinend nicht aufgerufen wird. Bei einer anderen Seite des Webs funktioniert das Verfahren <%# GetText() %> einwandfrei.

Vermutlich was saublödes 😃 Was habe ich vergessen?

08.11.2010 - 09:40 Uhr

Danke für den Link. Da waren meine Informationen tatsächlich "etwas" veraltet 😃

07.11.2010 - 01:16 Uhr

Es ist ja allgemein bekannt, dass der GoogleBot Probleme mit ASP-Seiten bzw. mit Formularen hat. Ist ja auch kein Wunder, google kann ja nicht hellsehen, welche Auswahl Sainn macht.

Wie sieht es nun denn mit "einfachen" Werten aus, etwa ImageButtons, die unabhängig von anderen Formularfeldern arbeiten. "Klickt" Google Buttons?

Und wie siehts mit Ajax aus?

Gibts da Erfahrungen?

01.11.2010 - 16:38 Uhr

Ok. Problem gelöst:

var retval=datacontext.LoadCustomer(id);

if (((int)retval.ReturnValue<0)) {
// Fehlerbehandlung
return false;
} else {
foreach (LQObj.LoadCustomerResult res in retval {
    this.Vorname=res.Vorname;
    this.Nachname=res.Nachname;
  }
return true;
}
01.11.2010 - 16:32 Uhr

Hmm?

Die beiden Returnwerte waren als Beispiel gedacht um das Problem zu verdeutlichen. Die Gründe für die Return-Werte sind deutlich komplexer, aber das würde das Problem nur unnötig komplizieren.

Ansonsten ist es eine relativ normale LinQ-Datenbankabfrage über eine Stored Procedure. Everydays Work würde ich sagen, also nicht "Unsinnig"...

Hast Du überhaupt schon mit LinQ gearbeitet?!?

01.11.2010 - 16:07 Uhr

verwendetes Datenbanksystem: MSSQL

Hallo allerseits. Ich nutze LiNQ um auf Stored Procedures zuzugreifen. Eine solche Prozecur sieht z.B. wie folgt aus:

create procedure LoadCustomer (
    @id int
) AS BEGIN
  IF @id IS NULL
  BEGIN
    return -1;
  END 
  IF @id<0 
  BEGIN
    return -2;
  END
  
  SELECT vorname, nachname FROM customer WHERE id=@id; 
END

In C# sähe ein Aufruf z.B. wie folgt aus:


private bool Load(int id) {
  foreach (LQObj.LoadCustomerResult res in datacontext.LoadCustomer(id) {
    this.Vorname=res.Vorname;
    this.Nachname=res.Nachname;
  }
  return true;
}


Soweit alles i.O. Aber wie komme ich an den Returnwert, falls es schief läuft? Ich möchte also an die -1 bzw. -2 kommen im Fehlerfall. Das Ergebnis von LoadCustomer() ist ja immer List<LoadCustomerResult>.

28.10.2010 - 15:07 Uhr

Hallo allerseits.

Ich habe ein WinForm-Anwendung, die auf bestimmte Events von "aussen" reagiert. Konkret überwache ich derzeit die Zwischenablage und reagiere bei bestimmten Inhalten.

Das klappt alles Wunderbar. Allerdings soll das Programm nichts tun, wenn ein beliebiger Dialog von meiner Hauptform (die aufs Event reagiert) geöffnet wurde, die Hauptform also im "Hintergrund" ist.

Es gibt eine Unzahl stellen, an denen ich Dialoge öffne, beim erstellen eines Dialoges also etwas zu speichern oder den Eventhandler zu entfernen ist also keine echte Option.

Gleichzeitig soll die Anwendung aber weiterhin reagieren, wenn ich in ein komplett anderes Programm Wechsel.

Einen Tipp für mich?

15.09.2010 - 11:33 Uhr

Bin heute in VS 2005 zufällig über folgendes gestolpert:

 public class testClass
    {
        private string _privateString;

        public string PublicString
        {
            get { return _privateString; }
            set { _privateString = value; }
        }

        public void SetPrivateElement()
        {
            testClass tc = new testClass();
            tc._privateString = "private"; // ERROR
            tc.PublicString = "PUBLIC"; // NO ERROR
        }
    }
}

Eigentlich habe ich erwartet, dass ich in der Zeile wo "ERROR" steht einen Compilerfehler bekomme, da ich ja auf ein Private-Feld eines anderen Objekts zugreife (auch wenn dieses Objekt vom gleichen Typ ist wie das aufrufende Objekt), aber das läuft alles wunderbar durch.

Warum bekomme ich keinen Fehler? Mach ich da einen Denkfehler?

14.09.2010 - 14:46 Uhr

Das hauptsächlich spricht definitiv für eine Synchronisation.

Es sind garantiert nur lesende Zugriffe, nur eben nicht alles über .Find

Was die gepostete Methode angeht, so würde sich hier eine Sortierte Liste anbieten

Ich wollte nur ein möglichst schnelles Beispiel hinposten ohne Euch mit unnötigem Code zu verwirren 😃 Tatsächlich sind die Abfragen komplexer

Danke

13.09.2010 - 16:30 Uhr

Hallo allerseits. Ich habe eine statische Liste, die einmalig zum Programmstart gefüllt wird und dann von verschiedenen Threads gelesen wird.

Dass auf diese Liste zugegriffen wird während sie noch gefüllt wird ist ausgeschlossen. Ich verwende hauptsächliche Find-Methoden um Elemente in dieser Liste zu erhalten.

in der Richtung:

public static class staticListFunctions() {
   private static List<MyClass> _myList;

   Public Static List<MyClass> GetElFromList(int maxId) {
      return _myList.FindAll(delegate(MyClass srcClass) { return srcClass.id<=maxId;});
   }
}

Das eine statische Liste generell nicht immer eine so tolle Idee ist, ist mir klar, die Alternative wäre aber sich ständig wiederholenden DB-Abfragen, und genau das verhindere ich durch die Verwendung der Liste.

Nun zur eigentlichen Frage:
würdet Ihr die Abfrage locken? Kann es bei dem ausschließlich lesenden Zugriff zu Problemen kommen, wenn zwei Threads gleichzeitig auf die statische Methode/Liste zugreifen?

Danke

11.06.2010 - 11:17 Uhr

Hallihallo.

Ich habe weder hier noch bei google was ordentliches gefunden, immer nur den umgekehrten Fall.

Ich möchte eine Combobox mit einem DataGrid oder einer Listview füllen. Also im Prinzip eine mehrspaltige Combobox. In WPF "Peace of Cake", aber bei WinForms bräuchte ich da mal etwas Unterstützung.

Bitte kein fertiges Control verlinken, ich will schon verstehen, was ich da tue 😃

01.06.2010 - 10:14 Uhr

Danke für den Link. Wäre aber nie auf den Gedanken gekommen ausgerechnet nach "Fokus" bei dem Problem zu suchen 😃

31.05.2010 - 15:52 Uhr

Hallo allerseits. Ich drucke per "PrintDocument" einen Text auf meinen Drucker:

           PrintDocument pd = new PrintDocument();
                pd.PrinterSettings.PrinterName = printer;
                pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
                pd.Print();

Im Eventhandler passiert das eigentliche Drucken; Soweit so gut.

Nun erscheint beim Drucken aber jedes mal das angehängte Fenster.

Gibt es ne Chance, das wegzubekommen oder kriege ich das nur durch TopMost,- etc. meiner Anwendung hin?

26.05.2010 - 18:05 Uhr

Hallo allerseits. Ich wollte eine automatisch schließende MessageBox-Programmieren und dachte mir mit folgendem simplen Weg komme ich ans Ziel:

 public MessageBoxAutoClose(int intervalSeconds, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
        {
            Timer tmeClose = new Timer();
            tmeClose.Interval = intervalSeconds * 1000;
            tmeClose.Tick += new EventHandler(tmeClose_Tick);
       
            tmeClose.Start();
            MessageBox.Show(text, caption, buttons, icon);
        }



        void tmeClose_Tick(object sender, EventArgs e)
        {
           // mach Dicht datt Ding
        }

Der Timer-Event wird wunderbar angesprungen, aber wie komme ich da an das MessageBox-Objekt? Sowas wie

object msgBox=new MessageBox();
msgBox.Show();

wodurch ich dann ans MessageBox-Objekt käme gibt es ja nicht.

Tipps?

21.05.2010 - 12:01 Uhr

Hallo allerseits. Ich möchte eine Schriftart in meinem Projekt nutzen, die nicht in Windows registriert ist. Ob dies nun per physikalischer TTF-Datei oder per eingebetteter Resource passiert ist mir relativ egal.

Ich habe mich an die MSDN-Anleitung gehalten:

private void LoadBCFont()
        {
            _pfc.AddFontFile(string.Format("{0}\\Properties\\{1}.ttf", Application.StartupPath, "customfont.ttf"));
            _fontFamilies = _pfc.Families;
 Font customFont= new Font(_fontFamilies[0].Name, 16, FontStyle.Regular, GraphicsUnit.Pixel);

        }

Wenn die Schriftart installiert ist in win, klappt es, wenn ich dies aber auf einer anderen Kiste durchführe, ist die "OriginalFontname"-Property von customFont zwar mit dem Namen der Schriftart gefüllt, die "Name"-Property allerdings steht auf "MS Sans Serif" und die Schriftart ist entsprechend.

Ich habe auch andere Quellen entdeckt, die eine andere Vorgehensweise haben, allerdings unsafe-Code verwenden und das möchte ich gerne vermeiden.

Irgendeine Idee?

04.05.2010 - 13:23 Uhr

Ich hab ja im Prinzip genau das gemacht, nur nicht mit den Fields, sondern den Properties.

04.05.2010 - 12:08 Uhr

Ich hatte eigentlich gehofft, es ginge ohne Reflection. Habe es nun wie folgt gelöst:

 
public class TopClass:BaseClass {
private int GetObjectProperties(BaseClass bc)
        {
                Type myType = typeof(BaseClass);
                PropertyInfo[] myPropertyInfo = myType .GetProperties(BindingFlags.Public | BindingFlags.Instance);

                foreach (PropertyInfo pinfo in myPropertyInfo )
                {
                    if (pinfo.CanWrite && pinfo.CanRead)
                    {
                        pinfo.SetValue(this, pinfo.GetValue(bc, null), null);

                    }
                }
        }
}

(Fehlerbehandlungsroutinen etc. entfernt)

04.05.2010 - 11:17 Uhr

Ich weiß nicht, wie ich einen guten Titel für diese Problemstellung schreiben soll, ich beschreibe einfach mal, was mein Problem ist:

ich habe eine Basisklasse

public class BaseClass {
private string _baseProperty;
public string baseProperty {
get {return _baseProperty; } 
set {_baseProperty=value; }
}
}

Von dieser Klasse ist eine weitere abgeleitet:

public class TopClass:BaseClass {
public TopClass(BaseClass bc) {
this=bc; // Geht so nicht
}
}

Warum die Zeile "this=bc" so nicht geht ist mir klar. Ich würde ja dam Objekt den Boden unter den Füssen wegziehen. Was ich aber möchte ist, alle Properties des übergebenen Objekts im Konstruktor zu übernehmen, ohne dass ich einzeln _"this.baseProperty=bc.baseProperty; this.anotherproperty=bc.anotherproperty... etc. "_angeben muß.

Wie erreiche ich das?

P.S: Dass ich außerhalb der Klasse TopClass recht einfach durch simples Zuweisen dieses Ziel erreichen kann ist mir klar. Ich möchte aber explizit im Konstruktor der TopClass dieses erreichen

31.03.2010 - 17:12 Uhr

Hallo allerseits.

Ein Kunde von mir behauptet, der Timeout der Seite wäre geringer als angegeben (30 Minuten)

Ich tipp zwar auf subjektives Fehlempfinden, aber dennoch: 😃

Folgenden Eintrag habe ich in der Web.Config:

    <authentication mode="Forms">
      <forms loginUrl="login.aspx" name=".ASPXFORMSAUTH" timeout="30" />
    </authentication>

Bei diesem Thema bin ich nun schon öfter auf den Parameter "slidingExpiration" gestolpert, kann mir aber noch nicht wirklich ein Bild machen, was er bewirken soll.

Brauche ich "slidingExpiration", damit bei einer Useraktion (PostBack) der Timeout wieder von vorne anfängt oder bin ich jetzt auf nem völlig falschen Dampfer?

31.03.2010 - 15:35 Uhr

Hoppla. 06/2009, Da war ich ja ein richtiger Blitzmerker 😁

23.03.2010 - 15:28 Uhr

Sorry, wenn das schon irgendwo gepostet wurde und ichs übersehen habe, aber alle Terrashop-Links landen nun bei der Standard-Affilli-Seite, anstelle des Produkts.

23.03.2010 - 14:02 Uhr

Ja. Aber der Eventhandler kommt ja erst nach dem PageLoad an die Reihe. Vielleicht geht da ja schon was schief.

23.03.2010 - 13:21 Uhr

Wenn die Seite neu geladen wird, sollte doch alles gehen. Pack doch mal nen breakpoint in die Page_load und step durch, ob irgendwo eine Exception auftritt

23.03.2010 - 11:22 Uhr

Leider nein.

Das ganze zieht sich ja weiter durch. Ich habe ordentlich Gebrauch von Listen gemacht, und das haut ebenfalls nicht hin.

Habe jetzt ne Parallele Klasse DL1und1 erstellt, wo auf "OldSchool"-Weise die Daten aus der DB geholt und das DataSet ans Frontend übergeben wird.

So kann ich relativ leicht wieder switchen, wenn ich denn mal nen ordentlichen Server habe.

Es tut mir zwar in der Seele weh, aber nützt ja nix 😦

22.03.2010 - 23:14 Uhr

Hallo allerseits.

Ich habe ein Projekt erstellt, dass lokal wunderbar läuft, beim Hoster 1&1 aber Fehler schmeisst. Jaaa, ich weiß, es gibt bessere, aber zum Testen brauchte ich halt was "Kleines"

Ich erhalte folgenden Fehler, sobald ich mit LinQ arbeite:

 System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Laut 1&1 sorgt bei Shared Hosting das CAS zu diesem Problem (und läßt sich wohl auch nicht umstellen)

Gibt es irgendeine "magische" LinQ-Einstellungen, dass intern anders gearbeitet wird einen anderen Trick für 1&1?

Ich möchte ungern mein schön sauberes Konzept zerstören, nur weil der Server das nicht packt.

Danke schonmal

21.03.2010 - 17:28 Uhr

Hallo allerseits.

Ich habe vermutlich ein Noob-Problem, aber die Kombi Flash/ASP.Net hatte ich bisher nie probiert.

Es geht um eine Seite mit FlashNavigation und einem ASP-Formular.

Wenn ich nun ein partielles Postback versuche, wird die Flash-Animation immer neu geladen. Ausschnittsweise der Code:

		<!--top_flash-->
				<tr>
					<td style="width:719px; height:353px;">
					
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
           codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"
           width="743" height="353">
    <param name="movie" value="flash/meingummi.swf?button=1"> 
    <param name="quality" value="high">
    <param name="menu" value="false">
    <!--[if !IE]> <-->
    <object data="flash/meingummi.swf?button=1"
            width="743" height="353" type="application/x-shockwave-flash">
     <param name="quality" value="high">
     <param name="menu" value="false">
     <param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer">
     FAIL (the browser should render some flash content, not this).
    </object>
    <!--> <![endif]-->
   </object></td>

[...]

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"></asp:ScriptManager>
<table style="height:100%; width:718px;">

[...]
<asp:UpdatePanel ID="srcUpdate" runat="server">
								<ContentTemplate>

<asp:DropDownList ID="dimWidth" runat="server" Width="51px" CssClass="f f1" 
                                                         AutoPostBack="true"    onselectedindexchanged="dim_SelectedIndexChanged">
                                                        </asp:DropDownList>
</ContentTemplate>
									</asp:UpdatePanel>

Wenn ich nun den Wert der Dropdown-liste verändere, wird die Flashanimation, die sich ja eigentlich ausserhalb des Updatepanels befindet jedesmal neu geladen.

Irgendeinen Trick um zu verhindern, dass das Flash neu geladen wird?

26.02.2010 - 17:05 Uhr

Mal wieder eine "akademische" Frage:

Ist [Serializable] oder [Serializable()] syntaktisch korrekter (vor der Klassenbezeichnung)?

21.01.2010 - 11:28 Uhr

Hallo allerseits.

Ich bekomme bei einem redirect (

Response.Redirect(string.Format("site.aspx");

)

Immer eine ThreadAbortedException. Was ja irgendwo auch Sinn macht. Bisher filter ich diesen Fehler bewusst aus:

 catch (System.Threading.ThreadAbortException)
            {
                //nichts tun: Diese Exception entsteht immer beim Redirect
            }
            catch (Exception ex)
            {
                _log.Error(ex);
            }

Gibt es auch eine elegante Lösung, sprich zu verhindern, dass die Exception überhaupt auftritt?

19.01.2010 - 17:45 Uhr

Hat sich erledigt. Habe natürlich ausgerechnet mit einem user getesetet, der von meiner Backendlogik automatisch wieder abgemeldet wurde Aufgrund eines fehlenden Flags "isEnabled" 😜

System.Web.Security.FormsAuthentication.SetAuthCookie(LoginName, true);

ging also doch 🙂

19.01.2010 - 16:34 Uhr

Hallo allerseits.

Ich habe eine Website, bei der ich per MembershipProvider für die Authentifizierung über eine Login-Form sorge.

  <authentication mode="Forms">
      <!-- Timeout nach 800 Minuten (path ist Cookie-Path -->
      <forms loginUrl="login.aspx" name=".ASPXFORMSAUTH" path="/" timeout="800"/>      
    </authentication>

Normalerweise muß man sich bei allen Sites anmelden um sie betrachten zu können. Nun benötige ich eine "Umleitungsseite", die bei Übergabe einer korrekten GUID und ID dafür sorgen soll, dass auf eine Seite directed wird, für die normalerweise eine Anmeldung notwendig ist. Diese Anmeldung soll dann aber nicht eingegeben werden müssen, sondern ich möchte per Programm dem Provider mitteilen, dass ein bestimmter User angemeldet ist.

Die Umleitungsseite existiert bereits und ist per web.config-Direktive aus der "Providerpflicht" entbunden:

  <location path="FromEmailLink.aspx">
    <system.web>
	  <authorization>
	    <allow users="*"/>
	  </authorization>	
	</system.web>	
  </location>

Diese führt dann einen redirect durch:

Response.Redirect(string.Format("dlg/protectedsite.aspx?Id={0}&guid={1}", id_baseObject,guid));

Wie schaffe ich es jetzt vor dem Aufruf der eigentlich geschützen Seite zu verhindern, dass die Anmeldung erscheint?

Danke schonmal.

[PS:

System.Web.Security.FormsAuthentication.SetAuthCookie(LoginName, true);

führte zu keinem Erfolg]

07.09.2009 - 14:26 Uhr

Hallo allerseits.

Ich habe das Problem, dass ein Kunde von mir partout Emails an eine Umlautadresse schicken muß:

so.ein.stuß@doof.com

Nun habe ich mich immerhin soweit durchgegeoogelt, dass ich die Mail per PunyCode umwandeln muß, um sie versenden zu können. (per smtp)

Gibt es da irgendwo ein Codesnippet, eine (brauchbare) Erklärung oder gar was im Framework?

Danke schonmal

06.08.2009 - 16:00 Uhr

Danke, habe ObjectReferenceEquals verwendet.

06.08.2009 - 15:05 Uhr

Bleibt das Problem: Sobald ich data1==null schreibe gibts ne Endlosschleife.

Ich habe es nun wie folgt gelöst:

object data1Object = (object)data1;            
object data2Object = (object)data2;
if (data1Object == null)
{
  return data2Object == null;
}

das Geheimnis ist also das Casten als Objekt. Gibts ne schickere Lösung?

06.08.2009 - 15:02 Uhr

ja, aber

if (data1==null || data2==null)

führt ja schon zur Endlosschleife...

06.08.2009 - 14:56 Uhr

Hmm. Den Gedanken hatte ich natürlich auch schon... Wenn ich aber folgendes mache:


     public static bool operator ==(BankData data1, BankData data2)
        {
          if (data1==null) {
             return data2==null;
           }
           else
           {
               return data1.NationalAccountNumber == data2.NationalAccountNumber &&
                   data1.NationalBankCode == data2.NationalBankCode &&
                   data1.Bic == data2.Bic &&
                   data1.Iban == data2.Iban;
           }
        }


führt die Abfrage "if (data1==null)" zu einer Endlosschleife, weil er hierfür erneut in diesen Opeator springt.

06.08.2009 - 14:36 Uhr

Hallo allerseits.

Ich habe um zwei Objekte einer eigenen Klasse zu vergleichen den ==-Operator und !=Operator überladen:

 
public class BankData {
     public static bool operator ==(BankData data1, BankData data2)
        {    
                return data1.NationalAccountNumber == data2.NationalAccountNumber &&
                    data1.NationalBankCode == data2.NationalBankCode &&
                    data1.Bic == data2.Bic &&
                    data1.Iban == data2.Iban;            
        }

        public static bool operator !=(BankData data1, BankData data2)
        {
            return data1.NationalAccountNumber != data2.NationalAccountNumber ||
                data1.NationalBankCode != data2.NationalBankCode ||
                data1.Bic != data2.Bic ||
                data1.Iban != data2.Iban;
        }
}

Wenn ich den nun mit zwei Objekten verwende klappt das auch:

BankData bd1=new BankData();
BankData bd2=new BankData();
BankData bd3=new BankData();
bd1.BIC="BIC1";
bd2.BIC="BIC2";
bd3.BIC="BIC1";
bd1.Iban="Iban1";
bd2.Iban="Iban2";
bd3.Iban="Iban1";
bd1.NationalBankCode="1220";
bd2.NationalBankCode="1223";
bd3.NationalBankCode="1220";
bd1.NationaAccountNumber="222";
bd2.NationaAccountNumber="242";
bd3.NationaAccountNumber="222";

if (bd1==bd2) {} // FALSE
if (bd1==b3) {} // TRUE

Nun habe ich aber mehrere Stellen, an denen ich prüfe, ob das Objekt null ist:

if (bd1==null) {
// whatever
}

Und genau da knallt es, da er ja auch hier in meinen überladenen operator springt. Gibt es eine Lösung für dieses Dilemma?