サーバーにWebプロジェクトをアップロードしました。
開発が行われたローカルPCでスムーズに実行されていましたが、サーバーではまったく実行されていません。エラーを読み取ることができる限り、空のDataSet(SQLデータベースからデータをフェッチする)に問題があります。繰り返しますが、aspxをローカルで実行すると、すべて問題ありません。エラーログに表示されるもう1つの問題は、ローカルドライブ「D:...」を指していることです。サーバーアドレスを指しているべきではありませんか?
エラー。
There is no row at position 0.
Exception Details: System.IndexOutOfRangeException: There is no row at position 0.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[IndexOutOfRangeException: There is no row at position 0.]
System.Data.RBTree`1.GetNodeByIndex(Int32 userIndex) +2474798
System.Data.DataRowCollection.get_Item(Int32 index) +21
WEB.Default.Page_Load(Object sender, EventArgs e) in D:\dev\Visual Studio\Temp\WEB\Default.aspx.cs:59
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3064
何か案が?VS2010の公開ツールを使用すると、サーバーに正常にアップロードされます。しかし、それは機能していません。
私が得られないもう一つのことは、ページの読み込みにtry / catchがある場合に、なぜWebページがこのエラーを送信するのかということです。エラーが発生した場合は、わかりやすいメッセージでラベルを設定します。
ありがとう。
編集
これがページ読み込みコードです。
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!IsPostBack)
{
Session["FlagOpen"] = false;
var windowsIdentity = WindowsIdentity.GetCurrent();
if (windowsIdentity != null)
{
var userName = windowsIdentity.Name;
userName = Regex.Replace(userName, ".*\\\\(.*)", "$1", RegexOptions.None);
var ds = _objUser.GetRanking(userName);
var ranking = ds.Tables[0].Rows[0][1].ToString();
_objPersona.Ranking = ranking;
_objPersona.UserName = userName;
_objPersona.RealName = ds.Tables[0].Rows[0][0].ToString();
Session["User"] = _objPersona;
LblUserName.Text = ds.Tables[0].Rows[0][0].ToString();
ds = _objUser.GetFAQ(userName);
var cant = ds.Tables[0].Rows.Count;
}
else
{
BtnAbrirBandeja.Enabled = false;
LblUserName.Text = "Not allowed.";
}
}
}
catch (Exception)
{
LblWarnings.Text = "Error. Please contact sysadmin.";
throw;
}
}
編集2。
ページはローカルで動作し続けます。しかし、サーバー上ではありません。ローカルフォルダを指す元のエラーをスローします(すでにサーバーからアップロードされて実行されている場合)。DataSetがnullであるのは、WebがSQLサーバーと通信できないためです。したがって、エラー。基本的に、デバッグ中は正常に実行されますが、サーバー上では実行されません。
何か案は?ありがとう。