【问题标题】:FileIOPermission Exception on a shared server with trust levels disabled by the host主机禁用信任级别的共享服务器上的 FileIOPermission 异常
【发布时间】:2012-07-12 13:30:30
【问题描述】:

我有一个托管共享服务器的 .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

【问题讨论】:

  • 您使用哪个提供商作为会员?
  • 我有一个 NCCMembershipProvider 类,它是默认 MembershipProvider 的覆盖

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


【解决方案1】:

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

【讨论】:

  • 我收回了。我注释掉了另外两行,它可以工作。
  • 是的,当我第一次开始针对 Medium Trust 进行测试时,这也让我感到惊讶。
猜你喜欢
  • 2010-10-16
  • 2013-11-04
  • 2011-03-11
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多