什么是最常见的典型的事情,以避免编码进入我的ASP.NET 应用程序,以便它下运行的介质的信任一个共享的主机?
-
07-07-2019 - |
题
什么事情,介质的信任,阻止你在做什么?例如,我已经了解到,介质的信任,停止使用系统。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的设置。询问他们正在使用的信任级别的规格。找出内存限制。获得这些详细信息后,您应该能够在本地级别复制方案。
如果他们不告诉您,只需将您的应用设置为以中等信任度运行,但如果他们使用修改后的信任级别(显然)则不一定有效。
一般来说,我遇到的唯一问题是:如果您正在推送程序集,请确保允许部分受信任的请求(它是程序集元标记),否则您将无法使用它们。
以下是 GoDaddy的中等信托信息页的摘录:
在Medium下运行的应用程序 信任级别没有注册表访问权限, 无法访问Windows事件日志, 并且不能使用ReflectionPermission (但可以使用反射)。这样 应用程序只能与之通信 定义的网络地址范围 和文件系统访问仅限于 应用程序的虚拟目录 层次结构。
使用中等信任级别可防止 访问共享的应用程序 系统资源并消除了 申请的潜力 干扰。添加OleDbPermission 和OdbcPermission允许应用程序 使用这些数据提供者访问 数据库。 WebPermission已修改 允许出站http和https 流量。
这可能并不完全映射到您必须与主机一起解决的问题(除非您使用GoDaddy),但这是一个典型的例子。
确保以中等信任度构建(或可以构建)任何第三方库/框架(Castle)。
system.runtime.serialization库在中等信任中完全不可用。
我为此编写了json序列化/反序列化,并找到了困难的方法。需要一个星期的时间让一位员工确认中等信托限制是罪魁祸首。结果我最终切换了托管公司。
在中等信任中,至少在我的主机上,P / INVOKE调用不可用,即使用 [DLLImport]
来调用COM组件是行不通的。
-Edoode