System.IndexOutOfRangeException: There is no row at position 4. at System.Data.RBTree`1.GetNodeByIndex(Int32 userIndex) at System.Data.RBTree`1.get_Item(Int32 index) at System.Data.DataRowCollection.get_Item(Int32 index) at JJCore.BLL.JW_InnHotelED.BSRateList(String ChannelCode, String uid, DateTime bt, DateTime et, Int32 RmNum) in D:\TFSTest\PROJECT\JJProject\JJCore\BLL\JW_InnHotelED.cs:line 2654 at JJCore.BLL.DN_Unit.BS_GetHotelInfos(BS_HotelInfoEntity hi, String brand, String[]& errors) in D:\TFSTest\PROJECT\JJProject\JJCore\BLL\DN_Unit.cs:line 664 at JJServer.Service1.BS_Get_Hotels(BS_HotelInfoEntity hi, String brand, String[]& errors) in D:\TFSTest\PROJECT\JJProject\JJServer\Service1.svc.cs:line 1636 at Milestone.BestDay.Web.FunctionWebService.BSGet_hotels(BS_HotelInfoEntity Hi) in d:\baishi1203\App_Code\FunctionWebService.cs:line 227 at Milestone.BestDay.Web.Web_Booked_Index.Bind() in d:\baishi1203\Web\Chain\Index.aspx.cs:line 48 at Milestone.BestDay.Web.Web_Booked_Index.Page_Load(Object sender, EventArgs e) in d:\baishi1203\Web\Chain\Index.aspx.cs:line 21 at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at Milestone.BestDay.Web.PageBaseWeb.OnLoad(EventArgs e) in d:\baishi1203\App_Code\PageBaseWeb.cs:line 39 at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
错误如上,是bll层里出错。
我要问的是路径问题,即为什么在web层的地址是d:\baishi1203\而bll层是D:\TFSTest\PROJECT?说明,我本地是D:\TFSTest\PROJECT而服务器是d:\baishi1203,现在是在服务器上报错

解决方案 »

  1.   

    创建sln,可设置不同项目路径
    WEB层添加bll的项目引用
    单步哪行错误
      

  2.   

    即为什么在web层的地址是d:\baishi1203\而bll层是D:\TFSTest\PROJECT?======因为你部署 bll 层是已经编译过的 dll & pdb,此 dll & pdb 是在你本地编译的,带的信息当然是本地的路径信息而你部署 web 层是按 web site 部署的(注意是 web site 和 web app 是不同的),注意到 app_code/xxx.cs 源码都部署上去了,网站运行会再次编译这些 cs,且在服务器上编译,
      

  3.   

    我确实是把所有代码直接复制到服务器上的我这个是website,正常的发布应该是怎样的?我之前是在vs2008里发布的,但发布后没了.cs文件,我可以把发布后的.aspx和.dll等文件放服务器上,但问题是,我一旦修改了某个.cs文件,我还得重新发布?
    而发布后,我不清楚我得替换哪个dll文件。
      

  4.   

    如果是三层的话每个层对应一个dll的~改了哪个就上传哪个就可以啦~
      

  5.   

    据2楼
    我在本地编译的bll层所以是我本地的路径,ok
    服务器会重新编译cs,所以web层路径是服务器上,ok但有个问题:这个bll的路径是我本地的,服务器上没有,它怎么能运行起来?
      

  6.   


    #2楼已经说了,只是其中所带的debug调试信息。一个说明文本,不需要运行。
      

  7.   

    你这怒发布的文件夹下看看不的Bin文件夹里有没有Bll.dll文件的如果没有 就证明不  的Bll的那层就没编译成功,不是因为错误,如果你发布时你代码有错误的话就不可以成功发布,可能是你这代码里调用什么方法时没注意,就是这样没生成你想要的文件和报错啦 。
      

  8.   

    我是将website所有源码放服务器上的。
    不知道这种发布方式会不会慢,因为它还得重新生成web层的。
    而我用vs2008发布出来没cs文件的那种,以后修改不方便替换dll。因为
    默认的发布方式生成随机的dll文件。
    而使用webdeployment发布网站,可生成固定的名称DLL,但好像这东西只能用在vs2005上web site咋就这么蹩脚啊!相信大家都用web application