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

看起来您的应用程序正在以中等信任或更低的信任运行。看看这篇关于信任级别的博客文章以及如何更改它们……这取决于 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 回答