我有一个托管共享服务器的 .Net 4 站点。它工作正常,直到我通过尝试登录访问会员提供程序,其中我收到以下错误:
异常详细信息:System.Security.SecurityException:请求“System.Security.Permissions.FileIOPermission,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败。
它给了我提示,这可能是因为 web.config 中的信任级别设置:
说明:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。
不幸的是,我无法更改信任级别,因为主机禁用了它。但我不确定我是否真的需要 FileIOPermission 访问权限,因为我认为我不需要写入文件系统。
我的 Membership Provider 是对默认 MembershipProvider 的覆盖,没有任何异常可以写入我知道的文件。所做的更改只是向用户表添加了一些参数。
那么有没有办法禁用对 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