找回密码
 注册
查看: 905|回复: 0

解决Godaddy主机asp.net无法上传文件的问题

[复制链接]
发表于 2011-9-4 11:44:36 | 显示全部楼层 |阅读模式
Godaddy的WINDOWS主机,asp.net的信任模式为中等,如果是新站子站中使用文件操作将会出现无权限调用程序集的错误!相信很多朋友都曾尝试过很多办法,但结果非常令人失望,Godaddy不允许在Web.Config中修改信任模式,有的朋友将asp.net的版本设置为1.1,这样就可以使用完全的信任模式。那我们的程序是.net2.0甚至是.net  4.0的怎么办呢?  
以下我就会通过一个文件上传的例子来说明如何解决Goddady主机的无权限调用程序集的解决办法!  
如果在子站中上传文件,就会提示没有I/O操作的权限,如下图:  


  
AllowPartiallyTrustedCallersAttribute  特性允许部分分受信任的代码调用某个程序集,该特性位于System.Security命名空间下。  
只能用于程序集,只要我们为程序集添加该特性,那我们的代码就能调用System.Security.Permissions.FileIOPermission程序集。  
代码如下:  

using System.Reflection;  
using System.Security;  
using System.Runtime.CompilerServices;  
using System.Runtime.InteropServices;  
// 有关程序集的常规信息通过下列属性集  
// 控制。更改这些属性值可修改  
// 与程序集关联的信息。  
[assembly:AllowPartiallyTrustedCallers]  
[assembly:AssemblyCompany("OPSoft Inc.”)]  
[assembly:AssemblyProduct("OPSite.Web”)]  
[assembly:AssemblyCopyright("版权所有 (C) www.ops.cc 2011")]  

我们需要添加粗体部分到我们的程序集信息文件中。现在我们可以再试试上传功能,发现存储文件的时候:  
Server.MapPath(""") 返回的路径已经是根目录了,那子站的文件上传到根目录肯定没有这个权限的!  
可以使用AppDomain.CurrentDomain.BaseDirectory 获取当前程序集的目录路径。  
这样asp.net就可以完美的在goddady的子站中上传文件和I/O操作了!  
文章由www.ops.cc站长撰写。                  
                 
                感谢
刘铭
的投稿
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|鼠窝站长论坛

GMT+8, 2024-12-30 01:40 , Processed in 0.050024 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表