neljapäev, 8. aprill 2010

IE-l on Request.UrlReferrer null JavaScriptiga ümbersuunamise puhul

IE9 puhul lubatakse juba muudatust aga kui vaja teha nii, et ekraanile tuleb JavaScripti alert kast ja peale seda minnakse teisele veebilehele


string scriptString = "<script type=text/javascript> alert('"Uuele lehele "');window.location='UusLeht.aspx';</script>";




window.location='UusLeht.aspx' teeb ümbersuunamist

lisame JavaScripti dünaamiliselt lehele

if (!this.Page.ClientScript.IsClientScriptBlockRegistered("clientScript"))
{
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", scriptString);
}

peale sellist ümbersuunamist on UusLeht.aspx lehe peal IE puhul this.Request.UrlReferrer null

Asendusena võib kasutada seda, et GET päringule paned lisaks referer=KustMaTulen.aspx
aga see ei pidavat turvafiltritele meeldima, võimalik turvarisk

teisipäev, 16. märts 2010

Fondi tingimuslik muutmine ReportViewer controlis

Vaja näiteks mingil tingimusel väljatrükil teksti paksus kirjas näidata. Asi muidu lihtne, vastava Controli koha peal võtad Properties ja Font
ja klikid Fx nupule, kogu edasine tarkus selles, et fondi nimi tuleb panna jutumärkide "" vahele
=IIf(Fields!GUARANTEE_MONEY.Value > Fields!GUARANTEE_MONEY_PAID.Value,"Bold","Normal")

Kui jutumärke ei pane saad kompileerimisel veateate
The FontWeight expression for the textbox ‘textbox19’ contains an error: [BC30451] Name 'Bold' is not declared.

kolmapäev, 10. märts 2010

Kustutamine tabelmuutujast SELF-CORRELATED päringuga

Süntaks selline, et viitamisel tuleb tabelmuutuja nimi panna [ ] kandiliste sulgude sisse

DELETE FROM @lepingud WHERE EXISTS
( SELECT OP_LOG.CONTRACTS_ID FROM dbo.OP_LOG
WHERE OP_LOG.TEXT_TITLES_ID = 49 AND OP_LOG.CONTRACTS_ID = [@lepingud].CONTRACTS_ID )

reede, 5. märts 2010

LinkedServeri konfigureerimine ilma IP aadressita

Kui kaks SQL SERVER-it vaja omavahel kokku panna siis saab Linked Serveri teha IP aadressi põhiselt. Management Studio alt Server Objects -> Linked Servers -> New ja LinkedServeri nimeks paned IP aadressi.

Aga saab ka nii, et IP aadressi asemel võid kasutada näiteks nime, hea siis kui IP aadress peaks muutuma ei pea koodis tabelite juurde pöördumisi ümber kirjutama.

Mudida tuleb Windows Serveril hosts faili mis asub tavaliselt C:\Windows\System32\drivers\etc
kataloogis. Sinna faili kirjutad rea juurde

ip-aadress Serveri nimi #kommentaar
xxx.129.109.306 TEINESERVER #see teine SQL server millega tahad ühenduse luua

ja kui linked serverit hakkad tegema siis IP aadressi asemel võid kasutada TEINESERVER nime

esmaspäev, 1. märts 2010

ReportVieweri andmetabeli sorteerimine .NET 3.5 korral

Selline asi tuli seoses LINQ-iga ReportVieweril välja, et kui paneb dünaamiliselt ReportViewerile
DataSource külge siis sai seal ka .NET2.0 korral kohe andmeid sorteerida

dsReportsTableAdapters.RAPORT_KUIDO_STableAdapter ta = new dsReportsTableAdapters.RAPORT_KUIDO_STableAdapter();
dsReports.RAPORT_KUIDO_SDataTable tb = new dsReports.RAPORT_KUIDO_SDataTable();
ta.Fill(tb, begin, end);

ja panid andmed koos sorteerimisega Reportvieweri DataSource-le külge
this.ReportViewerAsendus.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dsReports_RAPORT_KUIDO_S", tb.Select("","SURNAME")));

see tb.Select("","SURNAME") tegi sorteerimise

Mingi hetk aga .NET3.5 tableAdapteri peale üle minnes, kus LINQ ka küljes on, tekib häda
nende veergudega, mis võivad andmebaasist tulles ka NULL-id olla, ehk
ReportVieweri IsNothing() funktsioon enam ei funka.

=IsNothing(Fields!VALID_UNTIL_DATE.Value) enam NULL-i ei tunnista, kuna veerus on "mingi muu asi sees", ehk dsReports.RAPORT_KUIDO_SDataTable tüübi asemel on DataRow[] massiiv millega ReportViewer 2008 Service Pack1 NULL-iste väärtuste korral hätta jääb.


Asja saab jälle tööle nii, et tuleb sorteerimine teha DataTable -dega ära ennem kui reportViewerile külge paned.

Lisakood sorteerimiseks võib välja näha nii


DataRow[] tulem= tb.Select("", "SURNAME");
dsReports.RAPORT_KUIDO_SDataTable tb2 = new dsReports.RAPORT_KUIDO_SDataTable();
foreach (DataRow rida in tulem)
{
tb2.ImportRow(rida); //impordime read uude tabelisse
}


this.ReportViewerAsendus.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dsReports_RAPORT_VALITUT_ASUKKAAT_KUIDO_S", tb2));// siin paneb juba uue tabeli külge

reede, 29. jaanuar 2010

UrlScan ja IIS6 Enable default content page

Üks asi juhtub, kui kasutad ISAPI filtrit UrlScan "valge nimekirja" režiimis ning kui annad seadistustes ette nimekirja lubatud faili laienditest mida IIS töödelda võib. ASP.NET rakenduse puhul näiteks:

[AllowExtensions]
.png
.jpg
.gif
.aspx


siis tekib robleem juhul, kui sul on IIS-i alt konfigureeritud
Web Site properties -> Documents ja seal märgitud
märkeruut Enable default content page ja vaikimisi leheks naiteks logiSisse.aspx

Kui nüüd sirviku URL peale lihtsalt www.minusait.ee kirjutada siis veebileht enam ei avane ja UrlScani logist on näha veateadet

GET / Rejected extension+not+allowed file+extension . -

Põhjus selles, et UrlScan astub ennem vahele, otsib faili laiendit . mis aga pole lubatud.
Lahenduseks ka lihtsalt . tuleb [AllowExtensions] nimekrijas lubada

[AllowExtensions]
. ; kirjuta siia lihtsalt punkt ja tühik
.png
.jpg
.gif
.aspx


ja veebileht avaneb nüüd ka sirvikul ainult www.minusait.ee sisestades Enable default content page logiSisse.aspx lehega

kolmapäev, 27. jaanuar 2010

UrlScan [AllowExtensions] ja CSS erinevate sirvikute korral

Kui võtta UrlScani nimeline ISAPI veebifilter IIS6-e peale kasutusele ja määrata seadistuses, et töötame "Valge nimekirjaga" UseAllowExtensions=1 , ehk lubame ainult teatud laienditega faile alla tirida

[AllowExtensions]
.gif
.aspx
.css

siis CSS failidega selline asi, et nende töötlemine sõltub sirvikust ja sellest, kas tegu on serveri või sirviku poolse kaskkaalaadistikuga (CSS).

Flock 2.5.2, Firefox 3.6 ja Opera 10.10 lasevad asja serveri poolel ära teha

ehk võib .css välja kommenteerida lubatavatest laienditest

[AllowExtensions]
.gif
.aspx
;.css

IE8 ja Safari 4.0.4 aga panevad pildi sirvikus endas kokku, ehk .css peab lubatavas laiendite nimekirjas olema.

Kui .txt laiend ära keelata siis tünga saavad ka need, kes robots.txt faili himustavad.