1

ファイルを Rackspace Cloud Files にアップロードすると、次の例外が発生します。

セキュリティ例外の
説明: アプリケーションは、セキュリティ ポリシーで許可されていない操作を実行しようとしました。このアプリケーションに必要な権限を付与するには、システム管理者に連絡するか、構成ファイルでアプリケーションの信頼レベルを変更してください。

例外の詳細: System.Security.SecurityException: タイプ 'System.Security.Permissions.FileIOPermission、mscorlib、Version=2.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089' のアクセス許可の要求が失敗しました

このファイルでのみ発生するようです。

一意のファイル名をチェックする方法で発生していますが、その理由がわかりません。

    private string GetUniqueStorageItemName(string storageItemName)
    {
        int count = 0;
        string Name = "";


        if (cloudConnection.GetContainerItemList(Container).Contains(storageItemName))
        {
            System.IO.FileInfo f = new System.IO.FileInfo(storageItemName); // error on this line
            if (!string.IsNullOrEmpty(f.Extension))
            {
                Name = f.Name.Substring(0, f.Name.LastIndexOf('.'));
            }
            else
            {
                Name = f.Name;
            }

            while (cloudConnection.GetContainerItemList(Container).Contains(storageItemName))
            {
                count++;
                storageItemName = Name + count.ToString() + f.Extension;
            }
        }

        return storageItemName;
    }
4

2 に答える 2

2

アプリケーションが Medium Trust 以下で実行されているようです。信頼レベルに関するこのブログ投稿と、それらを変更する方法を見てください...それは、Rackspace がどのように構成するによって異なります。

ASP.NET 信頼レベルの解明

于 2010-05-20T17:26:28.530 に答える
0

FileInfo を使用して回避します。コードを次のように変更しました。これが最善の解決策ですか?

            if(storageItemName.Contains('.'))
            {
                Name = storageItemName.Substring(0, storageItemName.LastIndexOf('.'));
                Ext = storageItemName.Substring(storageItemName.LastIndexOf('.'), storageItemName.Length - storageItemName.LastIndexOf('.'));
            }
            else
                Name = storageItemName;
于 2010-05-20T17:46:09.233 に答える