国外windows主机要注意权限级别

时间:2022-06-01 20:45:46
错误如下:

 

Request failed.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Exception: Request failed.

 

经过多方的排查,发现是由于xslt文件中包含有msxsl:script脚本的原因造成的,进一步细究,发现执行msxsl:script需要代码执行权限为full trust,而在godaddy的虚拟主机中,代码执行权限为Medium。

郁闷啊,我不太可能因为这样而放弃在xslt中执行script,因为如果不能执行script,那么xslt的开发难度将大增加,所以只好选择其它主机了。最让人郁闷的是,我刚刚在godaddy续费,早知如此,就不去他们家续费了。

随后,我又发信去godaddy和lunarPages咨询关于full trust level的事情,得到的答复是godaddy不支持,而lp是可以支持full trust的,godaddy的主机是.net 1.1支持full trust level,而lp的主机则是完全支持的,那然后我也是花了一天的时间,去找关于full trust的主机,需要这个功能的朋友注意了。

哪些美国主机可以支持Full Trust Level?

ixWebHosting 其实之前我也试过他们的主机,但是说句实在话,速度和稳定性方面实在是不也恭维,我当时是冲着15个IP去的,价格上要比godaddy略高,但加上送的15个IP以及3个免费域名,价格肯定要优于godaddy了,单单是15个独立IP,就值$2*15*12=360美元了。但从我试用并监测二十来天的情况下来看,我个人认为ix的windows主机,基本上可以不考虑。

LunarPages 我没有用过,没有发言权了,但idcspy的版主说最近速度有些慢,也不推荐购买

arvixe.com 这个公司好像在网上没什么消息,中文有几篇文章都是说好的,不排除是托,也极有可能是中国人在国外搞的小主机公司,但有一点,他们是支持Full Trust Level的,有用过这个公司主机的朋友留下言。

WebHost4life 这个公司比较有意思,他们有中文的客户混在idcspy论坛里,使用的人好像也不多,但可以肯定的是,支持full trust level的。

最后一招,自己买VPS/VDS或者独立主机了,目前godaddy的vds一年大概要两千多吧,windows主机最起码也得买512内存的了,太小了根本跑不起来,谁让windows系列产品都是吃内存大户呢。其它的也有便宜的,但我觉得应该要在2500-3000这个级别才可以用。

此外为了服务器安全,很多国外的Asp.net虚拟主机(比如GoDaddy)都把设置代码执行权限设置为Medium Trust Level,这时候,与Full Trust Level不同,Asp.net程序会有很多限制。如果你正在开发通用的Web产品,比如BBS、Blog、CMS、Portal,那么为了让产品能更大程度适应各种运行环境,你需要考虑到Asp.net中等安全模式的相关问题。

什么是中等安全模式?

Asp.net通过信任级别(Trust Level)设置代码执行权限,默认有5种,分别是:Full、High、Medium、Low、Minimal。虚拟主机提供商通常在系统的 machine.config配置了<system.web><trust level=’Medium’ />…

常见异常信息:

 

Required permissions cannot be acquired.

Description: An unhandled exception occurred during the execution of the current web request.

Please review the stack trace for more information about the error and where it originated in the code.

SecurityException: Request for the permission of type ‘System.Security.Permissions.ReflectionPermission failed

或者:

System.Security.SecurityException: Request for the permission of type ‘System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′ failed.

 

中等安全模式有哪些限制?

CodeDom、Emit以及基于CodeDom、Emit实现的Ioc、AOP技术无法使用。

VirtualPathProvider无法使用。

BuildProvider无法使用。

HttpWorkRequst无法使用。

OleDb无法使用。默认情况下Access数据库无法使用,不过GoDaddy可以通过管理面板将Access访问权限开启。

P/Invoke无法使用。System.Data.SQLite及sqlite-net都 是通过P/Invoke调用C语言版本的SQLite.dll实现的,因此也不能使用了。

ReflectionPermission及RestrictedMemberAccess无法访问,导致Ado.net for Entity Framework、DB4O,以及好多ORM工具无法使用。

一些常见问题的解决办法

SQLite无法使用:可以使用Access或VistaDB作为替换。

BlogEngine.net默认安装时出错:只需将Web.config中的<system.web><trust level=’Medium’/>删除即可。

LINQ to Entities / ADO.NET Entity Framework无法使用:参考http://mosesofegypt.net/post/Entity-Framework-minimum-permission-considerations.aspx

Discuz!net无法使用:使用YetAnotherForum代替。

附上国外主要的Windows虚拟主机商

国外windows主机要注意权限级别