2016-06-28 4 views
1

ASP.NETを使用している場合、runat = "server"を使用して相対パスが機能することがわかります。私は通常の文字列のパスでそれを達成する方法はありますか?私の呼び出しは、私が.NETサーバーにファイルをロードする

Could not find a part of the path 'C:\Program Files (x86)\IIS Express\~\App_Data\userConfigDefault.xml'. 

のエラーコードを取得し、この

userConfig.Load("~\\App_Data\\userConfigDefault.xml"); 

のように見えます私は私の溶液中に存在するxmlファイルをいただきたいが、私は、ハード、このアプリケーションので、その場所をコーディングすることはできませんポータブルになる予定です。私はどのように私のC#コードで相対パスを把握する必要があります。

助けがあれば助かります。ありがとう。

編集: 私が読もうとしているXMLファイルのファイルパスは、実際にはプロジェクトソリューションのApp_Dataフォルダです。 Rionの最初の解決策は私のuser \ AppData \ Roamingに私を指摘しました。私は厄介な男ではない。私のVisual Studioソリューション内の任意のフォルダをポイントすると、私の問題が解決されます。あなたはApp_Dataにディレクトリからファイルにアクセスしようとしている場合、下図のように、あなたがEnvironment.SpecialFolder.ApplicationDataプロパティを使用して検討すべき一般

+0

あなたは 'userConfig.Load(Server.MapPath("〜\\ App_Data \\ userConfigDefault.xml "))'を探していますか? –

+0

サーバーを稼働させることができませんでしたが、回避策が見つかりました。ありがとうございました! 'VARパス= System.Web.Hosting.HostingEnvironment.MapPath( "〜\\ App_Dataに\\ userConfigDefault.xml");' –

答えて

2

// This will resolve the appropriate path for your App_Data directory 
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),"userConfigDefault.xml"); 

また、Server.MapPath()も動作し、そのポイントの相対パスを受け入れる必要があります

var path = Server.MapPath("~/App_Data/"userConfigDefault.xml"); 
+0

私はOPは、ウェブサイトの 'App_Data'フォルダを使用しないようにしようとしていると思います機械。 –

+1

そのような場合は、 'Server.MapPath()'アプローチがこれを処理する最も適切な方法かもしれません。それを指摘してくれてありがとう。 –

関連する問題