我有一个托管共享服务器的.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
答案 0 :(得分:0)
您是否从代码中访问了Web.Config?请参阅以下答案:https://stackoverflow.com/a/2488591/69742,了解如何在不抛出FileIOPermissionException的情况下访问它