Ich habe es mittlerweile selbst gelöst: Ich gebe das Image als Base64 aus. Das geht im Firefox und ab IE7.
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?
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?
Hey. Danke für die Arbeit die Du Dir gemacht hast.
Werde da mal ein bisschen rumdoktorn und austesten. Schonmal ein schönes Wochenende.
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
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
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 😃
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.
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?
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?
Danke für die zahlreichen Antworten. Ist also wohl eher "Religionssache"
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?
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
Es fehlte ein Page.DataBind im PageLoad. %-)
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?
Danke für den Link. Da waren meine Informationen tatsächlich "etwas" veraltet 😃
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?
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;
}
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?!?
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>.
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?
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?
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
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
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 😃
Danke für den Link. Wäre aber nie auf den Gedanken gekommen ausgerechnet nach "Fokus" bei dem Problem zu suchen 😃
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?
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?
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?
Ich hab ja im Prinzip genau das gemacht, nur nicht mit den Fields, sondern den Properties.
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)
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
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?
Hoppla. 06/2009, Da war ich ja ein richtiger Blitzmerker 😁
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.
Ja. Aber der Eventhandler kommt ja erst nach dem PageLoad an die Reihe. Vielleicht geht da ja schon was schief.
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
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 😦
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
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?
Mal wieder eine "akademische" Frage:
Ist [Serializable] oder [Serializable()] syntaktisch korrekter (vor der Klassenbezeichnung)?
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?
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 🙂
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]
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
Danke, habe ObjectReferenceEquals verwendet.
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?
ja, aber
if (data1==null || data2==null)
führt ja schon zur Endlosschleife...
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.
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?