1

こんにちは、IIS 6 を適切に構成して約 2 日間、書き込み権限を付与しようとしていますが、これに関する適切なリソースが見つからないようです。 IISで。

私がやろうとしているのは、ファイルをサーバーにアップロードすることです。サーバー上の各ユーザーには、C# を介して自動的に作成される独自の特別なフォルダーがあり、ファイルをアップロードしようとすると、次のエラーが発生します。

パス 'D:\Projects IDE\Visual Studio\MyWork\Websites\Forum\Images\avatar\userAvatars\aleczandru' へのアクセスが拒否されました

これは、各ユーザーのフォルダーを作成してファイルを保存するための私のコードです。

private void addImageToApp()
{
    string path = "~/Images/avatar/userAvatars/" + User.Identity.Name;

    createPath(path);
    if( Directory.Exists(HostingEnvironment.MapPath(path)))
    {
        try {
              UploadImage.SaveAs(HostingEnvironment.MapPath(path));
              MultiViewIndex.ActiveViewIndex = 0;
        }catch(Exception ex)
        {
               AvatarDetails.Text = ex.Message;
        }  
    }
}

private void createPath(string path)
{  
    string activeDir = HostingEnvironment.MapPath("~/Images/avatar/userAvatars");
    if( !Directory.Exists(Server.MapPath(path)) )
    {
        string newPath = Path.Combine(activeDir, User.Identity.Name);
        Directory.CreateDirectory(newPath);
    }
}

インターネットで見つけることができるのは、フォルダー/プロパティ/セキュリティ/ ...を介して書き込み許可を追加する必要があるということだけですが、それはすべて問題ありませんが、フォルダーごとにこれを行うことはできません。

この時点まで、IIS を構成する必要があるかどうかはよくわかりません。これで少し迷っています。

フォルダの作成時にフォルダに書き込み権限を自動的に付与するにはどうすればよいですか?

そして、誰かがこれを行う方法を示す優れた記事またはチュートリアルを持っている場合は、それを共有してください。私が見つけたすべての情報は非常に基本的なものでした.

編集

ネットワーク サービス アカウントを Images フォルダーに完全な権限で追加し、アプリケーションのプール ID を NetworkService に設定しましたが、それでも同じエラーが発生します。

編集

この作業を行うために、過去数日間SQL-SERVERをいじっていたので、NETWORK SERVICEがSQL-SERVER master.dbデータベースに格納されていると理解しているものから何かを誤って構成した可能性があります.2つのネットワークがあるようですサービス ログインが問題である可能性がありますか?最初に確認したときは何もなかったのを覚えています。

ここに画像の説明を入力

4

2 に答える 2

2

簡単に言うと、asp.net アプリケーションが実行されているときに、タスク マネージャーを開いて process を見つけることができますw3wp。他のプロセスと同様に、W3wp プロセスにはユーザー ID があります (既定では - アプリケーション プール ID - DefaultAppPool(アプリケーション プール名など))。その場合は、という名前のユーザーに書き込み権限を追加する必要がありますDefaultAppPool。これを行うには、フォルダのプロパティ ウィンドウでセキュリティ タブを開き、change->addと入力IIS AppPool/DefaultAppPoolしてローカル マシンを選択します。

この投稿はあなたを助けるはずです!

于 2012-12-02T21:52:11.013 に答える
0

IISこれは、兄弟とは何の関係もありません。あなたがする必要があるのは、あなたのIIS. に進みApplication Poolます。Web サイトが実行されているアプリケーション プールを右クリックします。[詳細設定] を選択し、IDENTITY に対して行われたエントリを確認します。を使用するように変更しますNetworkServiceNETWORK SERVICEこれは、現在のアカウントでウェブサイトを運営していることを意味します。

ここで、ルート イメージ フォルダ、つまり "Images" を右クリックします。を選択しPROPERTIESます。を選択しSECURITYます。user を追加し、フォルダーに対するアクセス許可をNETWORK SERVICE付与します。FULL RIGHTS

コードを使用してこの「Images」フォルダーの下にフォルダーとファイルを作成すると、親からアクセス許可が自動的に継承され、必要なことを何でも実行できるようになります (追加/削除)。

これがあなたの質問に答えることを願っています。はいの場合は、「回答済み」としてマークしてください。

于 2012-12-03T18:55:41.913 に答える