Avatar billede anders_cp Nybegynder
23. april 2008 - 16:00 Der er 7 kommentarer og
1 løsning

Login-problem i asp.net-appl.

Hej Eksperter
Jeg arbejder videre på et asp.net 2.0 system, som er blevet lagt over fra en asp.net 1.0, så jeg mistænker lidt at det er i den forbindelse at jeg har fået problem med login.
Det er kun fra min desktop computer jeg har problemet (den kører UK Vista og har IE7, hvis det har interesse), min laptop (UK XP Pro og IE7) har ingen problemer,
min arbejds laptop (DK XP Pro og IE7) har heller ingen problemer.
Min egen laptop har ikke VPN software, arbejdslaptoppen har VPN software (men logger fint på både med og uden).
Firewall er naturligvis det samme for alle 3 maskiner.

Jeg får følgende fejlmedd:
[SqlException (0x80131904): String or binary data would be truncated.
The statement has been terminated.]
  System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +925466
  System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +800118
  System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +186
  System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1932
  System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +149
  System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1005
  System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +132
  System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +149
  System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +135
  Partner.Data.UserLogs.New(UserLog userLog) +1113
  Partner.Logic.UserLogs.New(UserLog userLog) +72
  Partner.Website.Login.ButtonOk_Click(Object sender, EventArgs e) +1722
  System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
  System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746

I ovenstående fejlmeddelelse henviser den til dataudtrækket

Partner.Data.UserLogs.New(UserLog userLog)
Koden ser således ud:
        public bool New(Types.UserLog userLog)
        {
            // new connection and command
            SqlConnection connection = new SqlConnection(ConnectionString);
            SqlCommand command = new SqlCommand();
            command.Connection = connection;
                       
            // parameters
            command.Parameters.AddWithValue("@SessionID", userLog.SessionID);
            command.Parameters.AddWithValue("@UserID", userLog.UserID);
            command.Parameters.AddWithValue("@OperatingSystem", userLog.OperatingSystem);   
            command.Parameters.AddWithValue("@Browser", userLog.Browser);
            command.Parameters.AddWithValue("@UserAgent", userLog.UserAgent);
            command.Parameters.AddWithValue("@BrowserWidth", userLog.BrowserWidth);
            command.Parameters.AddWithValue("@BrowserHeight", userLog.BrowserHeight);
            command.Parameters.AddWithValue("@ScreenHeight", userLog.ScreenHeight);
            command.Parameters.AddWithValue("@ScreenWidth", userLog.ScreenWidth);
            command.Parameters.AddWithValue("@ColorDepth", userLog.ColorDepth);
            command.Parameters.AddWithValue("@DomainName", userLog.DomainName);
            command.Parameters.AddWithValue("@IP", userLog.IP);
           
            // sql string
            string sql = "INSERT INTO UserLog ("
                + "SessionID, UserID, OperatingSystem, Browser, UserAgent, "
                + "BrowserWidth, BrowserHeight, ScreenWidth, ScreenHeight, ColorDepth, DomainName, IP) "
                + "VALUES("
                + "@SessionID, @UserID, @OperatingSystem, @Browser, @UserAgent, "
                + "@BrowserWidth, @BrowserHeight, @ScreenWidth, @ScreenHeight, @ColorDepth, @DomainName, @IP)";
           
            // save employee
            command.CommandText = sql;
            command.Connection.Open();
            bool success = Convert.ToBoolean(command.ExecuteNonQuery());
            command.Connection.Close();
            // clean up
            connection = null;
            command = null;
            // return
            return success;
        }

Any idea's ;)

Hilsen
Anders
Avatar billede jokkejensen Novice
23. april 2008 - 16:52 #1
Et af dine felter er for små til at indeholde en given streng.

/JJ
Avatar billede jokkejensen Novice
23. april 2008 - 16:52 #2
Altså database typen stemmer ikke overens med det indhold der ligges i. Der er ikke plads, og den advarer dig om at den vil blive beskåret.
Avatar billede anders_cp Nybegynder
24. april 2008 - 10:42 #3
Hej
Tak for svaret. Jeg vil teste hvad der ryger ind, en af dagene og komme med en tilbagemelding ;)
Avatar billede anders_cp Nybegynder
04. maj 2008 - 12:04 #4
Hej
Jeg har logget parametrene, og kan ikke se forskelle fra problem-pc'erne og login, som lykkedes. Nu vil jeg forsøge een ad gangen. Problemet er at testen kræver at der er en person hjemme med en pc, som ikke virker - men jeg håber det kan blive onsdag ;)

Hilsen
Anders
Avatar billede jokkejensen Novice
05. maj 2008 - 14:30 #5
Kan du ellers ikke bare lige smide noget fejlhåndtering ind, så du lige logger det data der er korrupt, og dumber data så du kan debugge det.

         
try{
            command.Connection.Open();
            bool success = Convert.ToBoolean(command.ExecuteNonQuery());
            command.Connection.Close();
}
catch(SqlException SqlExp)
{
//GEM SQL !
}
Avatar billede anders_cp Nybegynder
05. maj 2008 - 15:00 #6
Det vil jeg prøve. Tak!
Avatar billede anders_cp Nybegynder
07. maj 2008 - 18:23 #7
Hej
Tak for din response.
Fejlen er fundet og det var, som du startede med at skrive, et felt der var for lille, nemlig feltet UserAgent, der fyldte mere end der var sat plads af til.

Tak for din hjælp. Læg et svar ;)
Hilsen
Anders
Avatar billede jokkejensen Novice
08. maj 2008 - 10:00 #8
Selv tak !

Vh.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester