Back to "Spendera dagen kodning... (och .NET 1.03705.352 bugg!)"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

.NET Database Imported mostlylucidcouk Software Development

Spendera dagen kodning... (och .NET 1.03705.352 bugg!)

Sunday, 29 February 2004

Jag jobbar... Mmm ... tänkte jag skulle nämna en mycket udda bugg jag stötte på igår på arbete - som fick mig förbryllad för ungefär en och en halv dag ...

Jag hade skrivit en ansökan (portalen jag nämnt tidigare - och Utbildningsgemenskapen), som använder sig av Uppgifter Block för åtkomstprogramför att tillhandahålla DAL - som jag rekommenderar starkt. Hur som helst, Det här har alltid varit felfritt på alla plattformar jag provat det på.

    string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
    string exceptionStr=exception.ToString() + exception.StackTrace;
    SqlParameter[] sqlParams = new SqlParameter[4]; SqlParameter
    prmUser = new SqlParameter("@user",SqlDbType.VarChar,500);
    prmUser.Value = user;
    SqlParameter prmMessage = new SqlParameter("@exceptionMessage",
    SqlDbType.VarChar, 2000);
    prmMessage.Value = exception.Message;
    SqlParameter prmExStr = new SqlParameter("@exception",SqlDbType.Text);
    prmExStr.Value = exceptionStr;
    SqlParameter prmPortalId = new SqlParameter("@portalId",SqlDbType.SmallInt);
    prmPortalId.Value = 0; sqlParams[0] = prmUser;
    sqlParams[1] = prmMessage;
    sqlParams[2] = prmExStr; 
    sqlParams[3] = prmPortalId;
    /*SqlHelperParameterCache.GetSpParameterSet(_connectionString,"pr_Admin_InsertError");  sqlParams[0].Value
    = user;  sqlParams[1].Value = exception.Message;  sqlParams[2].Value
    = exceptionStr;  //sqlParams[2].Value = "Test String";  sqlParams[3].Value
    = ((PortalSettings)HttpContext.Current.Items["PortalSettings"]).PortalId;*/ 
    SqlHelper.ExecuteNonQuery(_connectionString,CommandType.StoredProcedure,"pr_Admin_InsertError",sqlParams);

Jag använder en metod som det ger kallas SqlHelperParameterCache.GetSpParameters (kommentar ut i koden ovan) - detta i princip bara befolkar en rad SqlParameter med parametrarna som returneras från DB - sparar lite kodning och gör appen enklare att uppdatera som SPs förändras - trevligt!

Det här har fungerat felfritt, snabbt och effektivt. Försökte att sätta in i vår testmiljö på torsdag - Jag fortsatte att få olika fel, Svårt fel och allmänt nätverksfel tillbaka från SQL Server 2000 när jag försökte köra den kommenterade koden ovan. Tja, versionen av .NET på den maskinen var 1.03705.352

  • en version jag aldrig sett och inte kan få - men jag antog, .NET 1.0 var alla vackra I stort sett samma sak, kanske några buggfixar men det är allt!

Umm ... fel, visar sig att denna version har ett stort problem när du försöker få parametrarna tillbaka från en SP när SP förväntar sig en "text" typfält - det bara får det fel på något sätt

  • och orsakar detta fruktansvärda, förbryllande fel. Lösning, uttryckligen deklarera fälttyper för parametrarna om din SP innehåller ett "text"-fält (endast ett jag provat det för, kan påverka fler "binära" typer).

Hur som helst, fast nu - men jag rekommenderar dig att uppgradera till 1.1 - som också har en fantastisk något jag upptäckte från några killar blogg på ASP.NET webbloggar enkel men sparar lite av skriva, verkar som DropDownList (Jag förväntar mig RadiobuttonList har det också, men inte provat det!) som är en SelectedValue egendom - Hur coolt är inte det - väl inte så coolt, men det är bättre än att göra den gamla ddl.SelectedItem.Value...bit kortare...

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.