2013-04-12 51 views
1

當我建立我的.net網站時,我使用 Directory.GetFiles(@「D:\ project \ images」)檢索文件路徑;在我的.net網站中使用Directory.GetFiles

但是,當我部署在互聯網服務器上,我不得不改變這個文件夾的鏈接,你能幫我我怎麼辦?我可以在Directory.GetFiles()中使用相對鏈接嗎?

+2

看看'Server.MapPath()'。 [文檔](http://msdn.microsoft.com/en-us/library/ms524632(v = vs.90).aspx) –

+1

這通常是您要暴露給配置文件的東西。 (web.config)查看如何使用'System.Configuration.ConfigurationManager'。 –

+0

是的,如果它是你的項目的一部分,使用邁克的建議,如果它在外面使用傑里米的。 – PSL

回答

1

有類似:

<configuration> 
    <appSettings> 
     <add key="ImagesFolder" value="\Images" /> 
    </appSettings> 
</configuration> 

然後在ASP.NET C#代碼後面你可以使用:

var ImagesFolder = ConfigurationManager.AppSettings["ImagesFolder"]; 

var files = Directory.GetFiles(Server.MapPath(ImagesFolder)); 

記住,你需要添加到參考System.Configuration程序集,否則您將無法添加使用語句並訪問ConfigurationManager

這樣就沒有硬編碼值,您可以通過編輯Web服務器上已部署的文件夾中的web.config文件來爲該appsetting編寫所需的值。

+0

你的解決方案非常簡單,但它不起作用,你能幫助我更多嗎? @ Davide Piras – Alaa

+0

爲什麼它不起作用?有什麼錯誤? – adt

+0

沒有錯誤,但它不檢索任何路徑@Davide Piras – Alaa

1

正確的方法是使用Server.MapPath 將Web應用中的虛擬路徑映射到服務器中的物理路徑。

3

將路徑放入您的web.config。無論如何,你不應該硬編碼路徑。如果它在未來發生變化會怎樣?

在你的設置中添加:

<appSettings> 
    <add key="myPath" value="D:\project\images"/> 
</appSettings> 

...,然後從應用程序中調用它:

var myPath = WebConfigurationManager.AppSettings["myPath"]; 

如果你真的要發瘋,看看web.config transformations這樣,當你發佈,您的發佈配置將被轉換並應用於您!

在web.config
+0

它不檢索任何路徑,mypath仍然是空的刺痛,爲什麼? – Alaa

+0

@Alaa沒有更多。你確定你使用的是正確的鍵名嗎? –

+0

如果您的密鑰名稱不正確,則不會引發錯誤 - 只返回null。 –