2016-04-13 14 views
0

に拒否された私は、エラーパスへのアクセスは、C#の

取得{ "パスへのアクセスは、 'C:\ storing_PAC_history_10_4_2016.xml' が。 が拒否されました"}

私は実行ASP.Netプロジェクトの指定されたパスにあるファイルを変更する次のコードdb.save(path)の命令。

XDocument doc = XDocument.Load(path); 
        XElement root = new XElement("Command"); 
        root.Add(new XElement("StartDateTime", _commandsLog.StartDateTime.ToString())); 
        root.Add(new XElement("CommandName", _commandsLog.CommandName)); 
        root.Add(new XElement("Output", _commandsLog.Output)); 
        root.Add(new XElement("UserOutput", _commandsLog.UserOutput)); 
        root.Add(new XElement("Status", _commandsLog.Status.ToString())); 
        root.Add(new XElement("EndDateTime", _commandsLog.EndDateTime.ToString())); 
        root.Add(new XElement("UserName", _commandsLog.UserName)); 
        doc.Element("CommandsLogs").Add(root); 
        doc.Save(path); 

`

+0

C:ドライブのルートにファイルを格納することはお勧めできません。あなたのASP.NETアプリケーションがあるディレクトリのサブディレクトリは良いアイデアでしょう。必要に応じて、IISがそのディレクトリからファイルを提供しないように設定できます。 –

答えて

1

ローカルでアプリケーションをデバッグする場合、プロセスはそこから生み出されたとして、あなたは(すなわちRight-click > Run as Administrator)あなたが管理者権限でのVisual Studioを実行していることを確認可能性がある可能性が高いディレクトリにアクセスすることができませんそうでなければそれを必要とするであろう。

そうしないと、あなたが使用しているIISのバージョンによって異なり、それが適切な権限(複数可)があることが保証されますされ、次の役割のいずれかに権限を確認することができます。

  • IIS_IUSRS
  • を他の人が述べたように
  • IIS APPPOOL\DefaultAppPool
  • NETWORK_SERVICE

それは良いアイデアのトンではありませんoアプリケーションにルートアクセスを与えます。これをローカルマシン上で実行されているすばやく汚いユーティリティアプリケーションの外部にあるあらゆる種類の生産方法で使用する場合は、アプリケーション内のサブディレクトリを使用し、そこからファイルを参照することを検討する必要があります(つまり、プロジェクトにアクセスしようとしているファイルをドロップし、アプリケーションに関連してアクセスします)。

+0

あなたは、ドライブのルートにASP.NETアプリケーションのアクセスを与えることをお勧めですか?私が理解する限り、それは一般的に悪い考えであると考えられています。 –

+1

いいえ私はそれを主張する意味はありませんでした。私は、どのディレクトリにアクセスしようとしているかにかかわらず、OPがアクセス権の問題をどのように解決するかを示していました。前述したように、**アプリケーションへのルートアクセスを提供することはお勧めできません**ので、アプリケーション内の子ディレクトリを使用する方がはるかに良いアイデアです。 –