Archive for the ‘ASP.NET’ Category

XmlSerializer debugolása

Thursday, November 27th, 2008

Trükkös esetekben megbetegedhet az XmlSerializer, de kifelé nem mindig mondja el pontosan mi baja, csak annyit böffent, hogy nem tudtam xml doksit generálni. Ilyenkor jó, ha bele tudunk debugolni a kódjába. Amely, mint tudjuk dinamikusan generálódik és röptében fordítódik, hogy típusos, reflection nélkül tudja elérni a szerializálandó típus tagjait.
No, itt látható, hogyan kell rávenni a serializert, hogy miután lefordította a dinamikusan generált kódját, ne törölje le a forrást, hadd debugozzuk már meg. Ezek után már csak be kell kapcsolni a VS debugger/exceptions menüben, hogy a CLR exceptionökre áljon meg a debugger, aztán F5, és várjuk a becsapódást.

Annyi mindent tudnék mesélni az utóbbi hetekben történtekről, hogy csuda, de nincs időm. Majd januártól…

Mi az a Dynamic Data?

Wednesday, May 28th, 2008

5 perces kis videó a témáról.

Valami olyasmi cucc ez, amivel rendkívül gyorsan össze lehet rakni CRUD jellegű adatkezelő website-okat, de teljesen testreszabható módon, template alapon, nem sima kódgenerálással. Érdekes megoldás, de nem tudom mennyire lesz majd használható.

Ingyenes LINQ könyv

Saturday, December 22nd, 2007

Aki ezek után azt mondja, hogy nem volt honnan tanulnia, nem hiszek neki. :)

Van itt még Ajax meg SilverLight könyv is.

UPDATE: SQL Injection? - NEM

Saturday, October 27th, 2007

http://www.cegtudor.hu/Alkategoria.aspx?varos=%C3%89rd&alkategoriaid=232&alkategorianev=kis%20%C3%A9s%20nagyker

Kimenet:
Input string was not in a correct format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Input string was not in a correct format.

Source Error:

Line 28: mySqlCommand2.CommandText = “UPDATE kategoria SET latogatok = latogatok + 1 WHERE (kategoriaid LIKE @kategoriaid);”;
Line 29: mySqlCommand2.Parameters.Add(”@kategoriaid”, SqlDbType.Int);
Line 30: mySqlCommand2.Parameters["@kategoriaid"].Value = Convert.ToInt32(LabelKid.Text);
Line 31: mySqlCommand2.ExecuteNonQuery();
Line 32: mySqlConnection2.Close();

Fura, mik vannak még a mai világban. Persze, mivel a paraméter int, nem egyszerű a dolog, de valószínűleg a többi rész is így van programozva.

UPDATE: baromságot beszéltem. Paraméteres a lekérdezés, teljesen jól van megcsinálva, így nem lehet injektálni. Elnézést, hogy pellengérre állítottam, szólok az ikreknek, hogy adjanak több időt aludni, addig is, nem blogolok több hülyeséget. :) Sorry.

Egy, ami nem szép, hogy debug módban van a kód, és a részletes hibaüzenetek látszanak kifelé. Ez is kiindulási alap lehet egy hacker részére.

Az aljas XmlDataSource cachelés

Saturday, August 25th, 2007

Az egyik kedves ismerősöm keresett meg egy problémával, amiben véletlenszerűen gond volt egy DataBind-olt DropDownList-tel.

Kicsit körbejárva a problémát kiderült, hogy az XmlDataSource alapban cache-el keményen, ami statikus XML fájlok esetén nem lenne nagy gond, sőt, de dinamikus bemenetnél alattomos hibákat okozhat.
Az alábbi kódot párszor futtatva azonnal látszik a cache-elés okozta hiba, míg a xds.EnableCaching = false; sor hatására megszűnik.

[source:xhtml]
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


CssClass="middle" DataTextField="Azonosito"
DataValueField="Kod">



[/source]

[source:csharp]
using System;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
int a;
string[] gy = { “alma”, “korte” };

protected void Page_Load(object sender, EventArgs e)
{
XmlDataSource xds = new XmlDataSource();
//xds.EnableCaching = false;
this.Controls.Add(xds);
xds.ID = “d”;
a = new Random().Next(0, 2);

xds.Data = string.Format(
@”


“,
a, gy[a]);
xds.XPath = “Data/Row”;
ize.DataSourceID = “d”;
}

protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);

int b = int.Parse(ize.Items[0].Value);
if (b != a)
{
throw new InvalidOperationException(
string.Format(
“Baj van, elvárt érték a lista első elemében: {0}, tényleges: {1}”,
a, b));
}
}
}

[/source]

Az ASP.NET debug=”true” káros hatásai

Tuesday, August 14th, 2007

Nem is gondolná az ember, mennyire sok ponton ront az alkalmazás teljesítményén és okozhat furcsa gondokat, ha a debug verziót használják éles websiteokon. Megér egy misét végigfutni.

IIS és .NET 2.0 interjú kérdések

Thursday, August 9th, 2007

Jók, érdekesek, némelyik rázós.

Monorail is cool?

Wednesday, August 8th, 2007

Legalábbis ő azt mondja. Én még nem ismerem, de amint lesz egy kis időm, innen kiindulva tanulmányozom. Amúgy egy ASP.NET-re épülő frameworkről van szó, bár nekem elsőre rubynak tűnt - a neve miatt.

Web.config olvasás medium trust esetén

Thursday, July 5th, 2007

Internetszolgáltatók shared hosting esetén általában medium trustra állítják be a webappokat, így azok nem tudják szétbabrálni a gépet, az nt secu mellé még a .NET CAS secu is besegít.
Néha ez gondot okoz, pl. a log4net se tudja kiolvasni a konfigját, mert a CAS megakadályozza ebben. Pedig ez nem olyan vészes dolog.

ASP.NET 2.0-ban már meg lehet mondani, hogy egy szekció olvasása okozzon-e CAS Demandot, magyarul, kell-e hozzá erősebb jog, vagy sem. Erről szól a konfig szekció requirePermission attributuma. A háttérben ez a ConfigurationPermission új 2.0-s permissionre épít. A reflector analyze funkciójával megnézve látható, hogy a BaseConfigurationRecord.CheckPermissionAllowed metódus intézi el a kérdést:

[source:c#]
private void CheckPermissionAllowed(string configKey, bool requirePermission, bool isTrustedWithoutAptca)
{
if (requirePermission)
{
try
{
UnrestrictedConfigPermission.Demand();
}
catch (SecurityException exception)
{
throw new SecurityException(SR.GetString(”ConfigurationPermission_Denied”, new object[] { configKey }), exception);
}
}

}
[/source]

Supervising Controller pattern

Tuesday, April 24th, 2007

Architektúra kedvelőknek egy jó kis cikk a Supervising Controller pattern használatáról ASP.NET-ben.

Balássy Gyuri Ajaxos szerszámosládája

Tuesday, March 27th, 2007

Ha Ajaxolnék, most örülnék nagyon.

Impersonation ASP.NET-ben, de csak rövid időre

Monday, October 30th, 2006

A technetklub levlistán jött elő ez a kérdés, hogyan lehet egyes műveleteket megszemélyesített kontextusban futtatni, míg a lap többi része default környezetben fut?

A megoldás (2.0) a LogonUserIdentity osztály használata.

Írtam hozzá kis példakódot a tudástárba.

Érdekelne, hogyan lehet kinyerni direktben, hogy impersonation alatt vagyunk-e, vagy az eredeti tokennel fut a szál?

URL rewiting asp.netben

Friday, October 20th, 2006

Aki a kérdőjeles, querystringes, ? majomkodós old school urlek helyett statikusnak kinéző normál pathokat szeretne használni asp.net-ben, az nézze meg ezt a kis open source libet.

Google kód kereső - fájl alapú providerek

Tuesday, October 17th, 2006

Nem hiszem, hogy van olyan, aki nem hallott róla, kipróbáltam. Pont kellett egy példához olyan membership provider, ami fájl alapú, nem adatbázis alapú. Rákeresve tök érdekes kódokat találtam, pl. Nikhil Kotari barátunk nagyszerű példákat dolgozott ki, amelyet csak alig kellett kiegészítenem a saját céljaimra.

Szóval tetszik ez a kereső, kíváncsi vagyok máskor is ennyire jó alapanyagot sikerül találnom.

Using Server Side Comments with ASP.NET 2.0

Friday, August 4th, 2006

Na, ez új volt, párszor már jól jött volna, csak sose realizáltam, hogy van ilyen.

Mikor és miért indul újra egy asp.net app?

Wednesday, August 2nd, 2006

Érdekes cikk, volt benne pár dolog, amit eddig nem ismertem.

Pl. ha egyszerre sok dllt kell update-elni a bin könyvtárban, akkor a

waitChangeNotification és a maxWaitChangeNotification

segíthetnek abban, hogy ne készüljenek inkonzisztens appdomainok, így néhány mérges weblátogató.