2014-01-16 47 views
-1

我已經writen視覺工作室2012的登錄方法登錄的代碼是:System.OverflowException:值是太大或太小,以Int16在IIS 6

public DataSet Login(string UserName, string Password) 
{ 
    DataSet Message = new DataSet(); 
    Tbl_Users User = new Tbl_Users(); 
    string ClientIP = Context.Request.ServerVariables["REMOTE_ADDR"]; 
    DataSet result = User.Login(UserName, Password, ClientIP); 
    if (Int16.Parse(result.Tables[0].Rows[0][0].ToString()) < 0) 
    { 
     DataTable dt = Message.Tables.Add("results"); 
     dt.Columns.Add("status"); 
     dt.Columns.Add("results"); 
     DataRow row = dt.NewRow(); 
     row[0] = "-1"; 
     row[1] = ErrorFinder.SQlErrorHandeling(Int32.Parse(result.Tables[0].Rows[0][0].ToString())); 
     dt.Rows.Add(row); 
    } 
    else 
     Message = result; 
    return Message; 
} 

當我執行它在視覺工作室裏,每件事情都可以。但是當我發佈的Visual Studio中的網站,並把它在Windows 7中的IIS,我得到這個錯誤:

System.OverflowException: Value was either too large or too small for an Int16. 
at System.Int16.Parse(String s, NumberStyles style, NumberFormatInfo info) 
at Service.Login(String UserName, String Password) 

我不知道什麼是錯的發佈網站?

+0

關於哪個值和哪條線準確? –

+0

你正在做'Int16.Parse(result.Tables [0] .Rows [0] [0] .ToString()',那個單元格的值是什麼?你確定它適合Int16嗎?它只能容納範圍在-32,768到32,767之間的值 –

回答

3

我懷疑result.Tables[0].Rows[0][0].ToString()包含一個Int16可以容納的較大值。所有類型的整數具有以下不同的存儲容量範圍

Int 16 -- (-32768 to +32787) 

Int 32 -- (-2,147,483684 to +2,147,483683) 

Int 64 -- (-9223372036854775808 to +9223372036854775807) 
相關問題