teisipäev, 18. mai 2010

ConnectionString seadete ülevõtmine virtuaalkataloogide puhul

On veebirakendus ja IIS-i peale teed samale rakendusele juurde VirtualDirectory kuhu paned samast rakendusest teise koopia käima kui Virtuaalrakenduse (Virtual Application). Vaja aga, et VirtualDirectorys olev rakendus võtaks teise andmebaasi külge. Kui seda teha "location" parameetriga


  260     <location path="DEMO">       


  261         <connectionStrings>


  263 <add name="TkConnectionString" connectionString="Data Source=SQLSERVER;Min Pool Size=2;Initial Catalog=DEMO-BAAS;Application Name=DEMORAKENDUS;User ID=DEMO_KASUTAJA;Password=seeseGane234ja2342keeRuline" providerName="System.Data.SqlClient"/>


  269         </connectionStrings>




Kõik nagu õige aga VirtualDirectoryst asja käima tõmmates pistab kisama, et va
"TkConnectionString" on juba olemas. Kuna see ConnectionStringide osa on
tõepoolest varem kirja pandud. Lahendus asjale see, et algne ConnectionString osa
tuleb mappida


   29 <location inheritInChildApplications="false">




vahele näiteks niimoodi


   29     <location inheritInChildApplications="false">


   30     <connectionStrings>


   31         <add name="TkConnectionString" connectionString="Data Source=SQLSERVER;Min Pool Size=2;Initial Catalog=BAASE;Application Name=OIGERAKENDUS;User ID=ORIGINAAL;Password=ikka97raSke76ja3536keerUline" providerName="System.Data.SqlClient"/>


   32     </connectionStrings>


   33     </location>




Nüüd nii, et VirtualDirectory-s olevasse rakendusse pöördumisel võtab teise andmebaasi ühenduse külge, ehk selle mis

  261 <location path="DEMO">



osa sees kirjas on. VirtualDirectorys olevas web.config failis jätad ConnectionStrings osa üldse ära.

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