什么是最常见的典型的事情,以避免编码进入我的ASP.NET 应用程序,以便它下运行的介质的信任一个共享的主机?

StackOverflow https://stackoverflow.com/questions/275444

什么事情,介质的信任,阻止你在做什么?例如,我已经了解到,介质的信任,停止使用系统。IO.路径。GetTempPath().什么其他事情一样?

有帮助吗?

解决方案

这里是如何学习并解决信任的问题。

1)搜索你的Windows\Microsoft。净\框架[你的版本]\配置文件夹中的文件:

  • 网。配置(这是根配置文件)
  • web_mediumtrust.config
  • web_hightrust.config

2)改变网络。config说

<trust level="Medium" originUrl="" />

3)试试你的ASP.NET 应用程序。我没有权限错误。

4)差异web_mediumtrust.config和web_hightrust.config在差异的工具,如WinMerge.

5)复制的设置从高中一个在一段时间,看看它们如何影响你的应用程序。在我的情况下,错误信息称ConfigurationPermission,因此很容易诊断。

如果你可以固定下的确切线的web_mediumtrust.配置文件,该文件正在阻止你,然后也许你可以共享,带你的托管公司和有更好的机会的工作的事情。

更多的文件:
http://msdn.microsoft.com/en-us/library/aa302425.aspx

@欧利我的应用程序 在编码和我必须做一些变通办法,在代码我开始的时候使用Lucene.NET.我不得不修改Lucene.NET 源代码,不要使用GetTempPath和系统。IO.FileInfo.

其他提示

谁可以肯定?这就是为什么你应该使用web.config中设置的信任级别进行开发。

 <trust level="Full|High|Medium|Low|Minimal" />

大多数共享主机不使用真正的中等信任环境,因为它限制了一些非常重要的事情。其他人为了自己的肛门原因限制了一些额外的设置。

您可以做的最好的事情是询问您的主机他们用于ASPNET的设置。询问他们正在使用的信任级别的规格。找出内存限制。获得这些详细信息后,您应该能够在本地级别复制方案。

如果他们不告诉您,只需将您的应用设置为以中等信任度运行,但如果他们使用修改后的信任级别(显然)则不一定有效。

以下是有关在IIS中设置信任级别的一些信息

一般来说,我遇到的唯一问题是:如果您正在推送程序集,请确保允许部分受信任的请求(它是程序集元标记),否则您将无法使用它们。

以下是 GoDaddy的中等信托信息页的摘录:

  

在Medium下运行的应用程序   信任级别没有注册表访问权限,   无法访问Windows事件日志,   并且不能使用ReflectionPermission   (但可以使用反射)。这样   应用程序只能与之通信   定义的网络地址范围   和文件系统访问仅限于   应用程序的虚拟目录   层次结构。

     

使用中等信任级别可防止   访问共享的应用程序   系统资源并消除了   申请的潜力   干扰。添加OleDbPermission   和OdbcPermission允许应用程序   使用这些数据提供者访问   数据库。 WebPermission已修改   允许出站http和https   流量。

这可能并不完全映射到您必须与主机一起解决的问题(除非您使用GoDaddy),但这是一个典型的例子。

确保以中等信任度构建(或可以构建)任何第三方库/框架(Castle)。

system.runtime.serialization库在中等信任中完全不可用。

我为此编写了json序列化/反序列化,并找到了困难的方法。需要一个星期的时间让一位员工确认中等信托限制是罪魁祸首。结果我最终切换了托管公司。

在中等信任中,至少在我的主机上,P / INVOKE调用不可用,即使用 [DLLImport] 来调用COM组件是行不通的。

-Edoode

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top