0

fileUpload コントロールを使用し、画像を保存できますが、削除しようとすると、次のようなセキュリティ エラーが発生します。

タイプ 'System.Security.Permissions.FileIOPermission、mscorlib、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089' のアクセス許可の要求に失敗しました。

私のローカルホストでは機能しますが、ウェブでは機能しません。Web構成ファイルに多くの種類のものを追加しようとしましたが、うまくいきませんでした。理由はわかりません。ファイルを保存できるのに削除できないのはなぜですか。System.Security.Permissions.FileIOPermission についてかもしれません...これが私のコードです:

    protected void btnDelete_Click(object sender, EventArgs e)
    {
        try
        {
            if (!String.IsNullOrEmpty(imgLogo.ImageUrl))
            {
                int index = imgLogo.ImageUrl.LastIndexOf('.');
                string fileExt = imgLogo.ImageUrl.Substring(index);
                string defPath = Business.DefinitionsData.getDefaultLogoPath();
                string entId = ((xOrgProject.DataAccess.EnterpriseUserTable)Session["Enterprise"]).EnterpriseUserId.ToString();
                string FullPath = Server.MapPath(defPath) + entId + fileExt;

                FileInfo file = new FileInfo(FullPath);
                if (file.Exists)
                {
                    file.GetAccessControl();
                    file.Delete();
                    Business.DefinitionsData.UpdateEntLogoPath(int.Parse(entId), null);
                    imgLogo.ImageUrl = null;
                    imgLogo.Visible = false;
                    btnDelete.Visible = false;
                    btnUpload.Visible = true;
                    Fu1.Enabled = true;
                    StatusLabel.Text = "Kaldırıldı.";
                }
            }
        }

        catch (Exception ex)
        { StatusLabel.Text = ex.Message; }
    }
4

2 に答える 2

1

ローカルで正常に実行されるため、問題は Web サーバーの構成が原因である可能性が最も高いです。または、私の経験では、これはよくあることです。

Web サーバーの machine.config ファイルで信頼レベルを変更してみましたか?

また、Web サーバーで使用している認証は何ですか?

ローカルで実行するとマシンにアクセスできますが、Web サーバーで偽装を使用している場合、その匿名アカウント ID には、セキュリティ例外をスローするファイルを削除するための関連するサーバー権限がない可能性があります。

于 2013-08-18T21:15:23.050 に答える
0

あなたの答えをありがとう、私は私の解決策を得ました。ボタンクリックイベントのアップロードでこのコードを書き、解決しました。以前は処分していませんでした。しかし今は良いです。再度、感謝します。

System.Drawing.Image img = System.Drawing.Image.FromFile(保存);

img.Dispose();

于 2013-09-01T00:18:28.400 に答える