FileIOPermission在主机禁用信任级别的共享服务器上的异常

时间:2012-07-12 18:06:51

标签: c# asp.net file-permissions membership-provider

我有一个托管共享服务器的.Net 4站点。它工作正常,直到我通过尝试登录访问成员资格提供程序,其中我收到以下错误:

  

异常详细信息:System.Security.SecurityException:请求类型为'System.Security.Permissions.FileIOPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。

它给了我提示,可能是因为web.config中的信任级别设置:

  

描述:应用程序尝试执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系或在配置文件中更改应用程序的信任级别。

不幸的是,我无法更改信任级别,因为主机禁用了该信任级别。但我不确定我是否真的需要访问FileIOPermission,因为我认为我不需要写入文件系统。

我的成员资格提供程序是对默认MembershipProvider的覆盖,没有任何异常情况会写入我所知道的文件。所做的更改只是向Users表中添加了一些参数。

那么有没有办法禁用FileIOPermission?

堆栈追踪:

[SecurityException: Request for the permission of type
'System.Security.Permissions.FileIOPermission, mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
failed.]
       System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
       System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission
cap, StackCrawlMark& stackMark) +31
       System.Security.CodeAccessPermission.Demand() +46
       System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share,
Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs,
String msgPath, Boolean bFromProxy, Boolean useLongPath) +597
       System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) +83
       System.Configuration.Internal.InternalConfigHost.StaticOpenStreamForRead(String
streamName) +79
       System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.OpenStreamForRead(String
streamName, Boolean assertPermissions) +124
       System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.OpenStreamForRead(String
streamName) +10
       System.Configuration.Internal.DelegatingConfigHost.OpenStreamForRead(String
streamName) +13
       System.Configuration.UpdateConfigHost.OpenStreamForRead(String
streamName) +38
       System.Configuration.BaseConfigurationRecord.InitConfigFromFile()
+450

1 个答案:

答案 0 :(得分:0)

您是否从代码中访问了Web.Config?请参阅以下答案:https://stackoverflow.com/a/2488591/69742,了解如何在不抛出FileIOPermissionException的情况下访问它