2011-10-13 368 views
1
使用Server.Mappath時

下面是我的代碼片段:權限被拒絕的錯誤使用

string ApplPath = Server.MapPath("./"); 
    switch (ddlReportType.Text) 
    { 
     case "District-wise": 
      if (ddlDistrict.Text == "All") 
       Response.Redirect(ApplPath + "contentReportAllDistricts.aspx"); 
      else if (ddlDistrict.Text != "All" && ddlDistrict.Text != "-- Select --") 
       Response.Redirect(ApplPath + "contentReportSelectedBlocks.aspx?" + ddlDistrict.Text); 
      break; 
    } 

當我不使用Server.MapPath,該應用程序運行良好,但現在,IE調試器顯示錯誤:Permisson Denied

我正在使用本地主機並從本地主機本身運行應用程序。

回答

1

將使用Server.Mappath的物理路徑返回到您的網站(例如C:/ mysite的/ ...),你應該改變你的代碼如下所示,從根獲得的路徑:

switch (ddlReportType.Text) 
    { 
     case "District-wise": 
      if (ddlDistrict.Text == "All") 
       Response.Redirect("~/contentReportAllDistricts.aspx"); 
      else if (ddlDistrict.Text != "All" && ddlDistrict.Text != "-- Select --") 
       Response.Redirect("~/contentReportSelectedBlocks.aspx?" + ddlDistrict.Text); 
      break; 
    } 

〜符號將解析爲您網站的根。

+0

我在我的根應用程序中有一個文件夾。路徑。該頁面位於該文件夾中。當我使用你的建議時,它顯示錯誤:找不到資源。很明顯,我應該在路徑中追加文件夾名稱,例如:「〜/ myFolder/contentReportAllDistricts.aspx」,但是有什麼辦法可以獲取正在運行的頁面的整個路徑嗎? – RKh

+1

@RPK - 您可以使用Request.PhysicalPath – adatapost

+0

@AVD它的工作原理,但它也挑選正在運行的頁面名稱。我只想要直到當前文件夾名稱的路徑。有什麼方法可以丟棄它正在選擇的頁面名稱嗎? – RKh