ローカルマシンにフォルダを作成しようとしましたが、期待どおりに機能しないため、次のコードの何が問題になっているのかを尋ねたいと思います。それは私に言っているエラーを与えます:
パス'C:\ inetpub \ wwwroot //PrintLabels/'へのアクセスが拒否されました
コード:
Directory.CreateDirectory(appPath + "//PrintLabels/");
ローカルマシンにフォルダを作成しようとしましたが、期待どおりに機能しないため、次のコードの何が問題になっているのかを尋ねたいと思います。それは私に言っているエラーを与えます:
パス'C:\ inetpub \ wwwroot //PrintLabels/'へのアクセスが拒否されました
コード:
Directory.CreateDirectory(appPath + "//PrintLabels/");
指定するパスは同じマシン上にある必要があります。または、サーバーと共有名の相対パスまたは汎用名前付け規則(UNC)パスを参照することもできます。
それは違いない
string path = @"\\172.16.136.35\\SharedFolder1\\";
IPアドレスは、コンピューター名の使用に置き換わるものです。両方を使用しないでください。
string path = @"\\ipaddress\comp_name\shared_folder\new_folder";
する必要があります:
string path = @"\\ipaddress\shared_folder\new_folder";
IPアドレスは、リクエストの送信元ではなく、共有フォルダーがあるコンピューターの1つであることに注意してください。
Windows Vista 以降を使用している場合は、最初に Visual Studio を閉じてから、そのアイコンを右クリックし、[管理者として実行] オプションを選択します。次に、コードを実行すると、アクセス拒否の例外が発生しなくなります。
AppPathの使用の問題だと思います。それがパスWWWrootです。ウェブサイトを作成するためのものです。そのため、正しいアクセス許可がない可能性があります。
正しいアクセス許可がある別のパスを試すことができます。
ほとんどの場合 (asp.net タグが欠落していると仮定すると)、コードは ASP.Net アプリケーションで実行されています。選択したセキュリティ モデル アカウントに応じて、コードが実行されるアカウントは、ブラウザ ユーザーまたは特別な「匿名」アカウントのいずれかになります。どちらのアカウントにも、"inetpub\wwwroot" フォルダーへの書き込み/作成フォルダーのアクセス許可はありません。
本当にこのアクセスを許可したい場合 - どのユーザー コードが実行されているかを確認します (つまり、例外が発生した時点で Environment.UserName を確認します) - このユーザーに許可を与えてもよい場合は、ファイルを作成するフォルダーにローカル エクスプローラーを移動します。フォルダのプロパティの「セキュリティ」タブで権限を調整します。
一般に、半ランダムな場所 (特に、windows/program files/inetpub などのシステム コントローラー) にファイルを書き込むことはお勧めできません。あなたの行動のセキュリティへの影響を理解していることを確認してください...
注: パスを正しく構成するようにしてください。Path.Combine
文字列の連結よりも、ランダムなスラッシュ/バックスラッシュ文字の長いリストを使用するより良い方法です。