1

OK、この問題を抱えている人を数人見てきましたが、相対パスではなく、すでにファイル パスを使用しています。私のコードは私の PC では正常に動作しますが、別の開発者が画像をアップロードしようとすると、このエラーが発生します。フォルダーのセキュリティ許可の問題だと思いましたが、システムアカウントにはフォルダーへの完全なアクセス権があります(ただし、アプリケーションが実行されているアカウントをテストする方法について混乱しています)。また、通常、ローカルで実行しても、あまり多くのセキュリティの問題が発生することはあまりありません:)

コード スニペット:

        Guid fileIdentifier = Guid.NewGuid();
        CurrentUserInfo currentUser = CMSContext.CurrentUser;
        string identifier = currentUser.UserName.Replace(" ", "") + "_" + fileIdentifier.ToString();
        string fileName1 = System.IO.Path.GetFileName(fileUpload.PostedFile.FileName);
        string Name = System.IO.Path.GetFileNameWithoutExtension(fileName1);
        string renamedFile = fileName1.Replace(Name, identifier);
        string path = ConfigurationManager.AppSettings["MemberPhotoRepository"];

        String filenameToWriteTo = path + currentUser.UserName.Replace(" ", "") + fileName1;
        fileUpload.PostedFile.SaveAs(filenameToWriteTo);

私の構成設定値は次のとおりです。

繰り返しますが、これは私のPCで正常に動作します! (そして、他の人のPCにフォルダーがあることを確認しました)。

任意の提案をいただければ幸いです - ありがとう:)

4

3 に答える 3

0

ファイルを保存するフォルダが存在することを確認してください。フォルダが存在しない場合、そのフォルダは作成されず、SaveAsメソッドは現在発生している例外をスローします。

ありがとうございました。

于 2012-08-31T13:02:16.123 に答える
0

問題が何であったかはわかりません。開発者以外の PC にあったため、最終的にデバッグすることはできませんでした。潜在的な原因を調査している間、彼が作業を続行するための回避策がありました。そのため、彼がサイトまたはファイルのアクセス許可を更新/実行する方法は、私のディレクトリのコピーを取得することで修正された可能性があります。

少なくとも、物理ファイルパスが必要であることはわかっているので、これが再び発生しないことを願っています!

于 2010-06-02T01:58:20.233 に答える
0

明らかに、 filenameToWriteTo はルート化されたパスではないということです...つまり、相対パスであり、サーバー構成はそれを好みません。Server.MapPathを使用して実際のパスを取得します...次のような...

string realPhysicalPath = Path.Combine(Server.MapPath(" "), filenameToWriteTo);
fileUpload.PostedFile.SaveAs(realPhysicalPath);

念のため、 filenameToWriteTo を印刷して、相対パスか物理パスかを確認してください。相対的な場合は、上記のアプローチを使用してください。

于 2010-05-14T06:03:20.273 に答える