2012-10-09 4 views
0

서버에서 웹 프로젝트를 업로드했습니다.ASPX는 로컬에서는 작동하지만 서버에서는 작동하지 않습니다.

개발이 진행된 내 로컬 PC에서 원활하게 실행되는 동안 서버에서 전혀 실행되지 않습니다. 지금까지 내가 읽을 수있는 오류, theres '빈 데이터 집합 (SQL 데이터베이스에서 데이터를 가져옵니다) 문제. 다시 aspx를 로컬에서 실행할 때 모든 것이 정상입니다. 오류 로그에서 볼 수있는 또 다른 문제는 로컬 드라이브 "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가있는 경우 웹 페이지가이 오류를 보내는 이유가 아닙니다. 오류가 있으면 레이블을 친숙한 메시지로 설정합니다.

감사합니다.

편집

다음 페이지로드 코드입니다.

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.

페이지는 로컬 작업을 유지합니다. 하지만 서버에는 없습니다. 로컬 폴더를 가리키는 원래 오류가 발생합니다 (이미 업로드되어 서버에서 실행 중일 때). null 인 DataSet은 웹이 SQL 서버와 통신 할 수 없기 때문에 발생합니다. 따라서 오류. 기본적으로 디버깅 중에는 정상적으로 실행되지만 서버에서는 실행되지 않습니다.

아이디어가 있으십니까? 감사. 어떤 이유를 들어

+0

합니다. – PhonicUK

+0

바보 같은 질문이지만 서버에서 액세스 할 수있는 데이터베이스입니까? – Jay

+0

@PhonicUK 필요한 경우 Page_Load를 보여줄 수는 있지만 (로컬로) 작동하기 때문에 로컬/서버 aspx 항목에서보다 일반적인 오류가 발생한다고 가정합니다. –

답변

1
당신이 데이터 세트에서 element에 액세스하기 전에 당신은, null에 대한 귀하의 데이터 집합을 테스트하기 때문에 오류 메시지가 필요

:

if (ds!=null) 
{ 
    //continue and access the dataset 
} 
else 
{ 
    //you didn't get any data or ds is simply null (result set is null) 
} 

당신은 또한 var 키워드를 오용하는, 당신이 사용할 필요가 없습니다를 var은 문자열 및 데이터 세트와 같은 간단한 유형에 사용됩니다.

+0

JonH. 게다가 ds는 null과 var의 것입니다. 오류가 내 로컬 개발 폴더를 가리키는 이유를 알고 있습니까? 프로젝트가 이미 서버에 업로드되었습니다. –

+0

어쩌면 당신은 해결책을 정확하게 배치하지 않았을까요? 그것은 내가 전에 보았던 것으로 생각되는 이상한 것입니다. 단지 그것이 어떻게 풀 렸는지 기억하지 못합니다. 내가 대답하기 전에 대답을 찾으면 여기에 다시 게시하십시오. – JonH

+0

익명의 로그인과 물건이었습니다. 이 프로젝트는 Windows/도메인을 얻을 수 없었기 때문에 스파크였습니다. 감사합니다 –

1

데이터가 액세스 할 수 없거나 존재하지 않습니다

[IndexOutOfRangeException: There is no row at position 0.] 

var ranking = ds.Tables[0].Rows[0][1].ToString(); 

당신은 그 라인을 수행하기 전에 (또는 할 수로 계산) ds.Tables.length을 확인해야합니다.

1

로컬 컴퓨터에서 로컬 서버에서 데이터를 가져 와서 서버 데이터베이스 엔진에서 데이터를 가져 오는 중일 수 있습니다. 테이블이 비어 있거나 테이블이 존재하지 않을 수 있습니다 .. 데이터 세트를 확인하십시오 어떤 errors..your의 시도 캐치에 가져 오는 방법은 .. 그 오류를 숨길 수도

질문의 다른 부분 :

당신의 catch 블록은 '던져'문 것이다 단지를 통해이 있기 때문에 그것은 그 예외가 발생

모든 내부 예외 세부 사항이있는 catch 블록에 의해 catch 된 동일한 오류 ..

참고 : (예외 예) {던져 전;} 캐치 작성하는 경우 말할 하드를보고 어떤 소스없이

내부 예외 세부 정보가 손실 될 수 ...

+0

고마워요, 쉬운 사람이었습니다. –

관련 문제