我試圖實現一個服務器控件,該控件在ASP.NET網站的Web目錄內創建了一對文件。我使用VS Web Dev Express 2008作爲我的IDE。當我撥打HttpContext.Current.Request.ApplicationPath
來獲取Web根目錄的路徑,以便找到這些文件時,它會返回C :.有沒有搞錯?在路徑中使用「〜」解析爲C:
絕對路徑工作得很好,但我想能夠爲服務器控件提供一個相對目錄,並讓它執行它的事情。我做錯了什麼?
public String Target
{
get { return _target; }
set
{
if (value.StartsWith("~"))
{
// WTF? Gives me C:\? Why?
_target = HttpContext.Current.Request.ApplicationPath +
value.Substring(1);
}
else
{
_target = value;
}
}
}
private String _target;
protected override void Render(HtmlTextWriter writer)
{
HtmlControl wrapper = new HtmlGenericControl("div");
int fileCount = 0;
try
{
DirectoryInfo dir = new DirectoryInfo(_target);
foreach (FileInfo f in dir.GetFiles())
{
fileCount++;
a = new HtmlAnchor();
a.Attributes.Add("href", f.FullName);
a.InnerHtml = f.Name;
wrapper.Controls.Add(a);
}
}
catch (IOException e)
{
throw e;
}
Controls.Add(wrapper);
base.Render(writer);
}
不,我碰巧被XP Home弄得一團糟。沒有IIS。 我最終可能會最終對該目錄進行硬編碼,但重點在於控件的用戶能夠在設計時指定目錄。 – Dustman 2008-10-04 01:25:32
是的,它必須是VS提供的迷你服務器......但是你會認爲它會知道它從哪裏獲取文件。 – Dustman 2008-10-04 01:51:16