关于在web.config中配置了引发的怪问题!

chuxuecharp 2005-10-24 01:22:53
我项目中需要两个功能,一个是根据在DATAGRID中选择数据,然后可以导出成EXCEL,我用了excel 11.0 object这个COM组件来做,代码写好后执行报错,System.UnauthorizedAccessException...拒绝访问,因为我项目用的是<FROMS>验证方式,然后我在WEB.CONFIG中添加了<identity impersonate="true" />,添加以后,EXCEL可以正常生成了..
但是还有另一个功能:就是上传EXCEL文件,然后把他显示在DATAGRID中.我使用如下代码:
if(上传成功)
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="excel.xls";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet);
foreach(DataRow row in myDataSet.Tables[0].Rows)
{
Response.Write(row[0].ToString()+" "+row[1].ToString()+" "+row[2].ToString()+"<br>");
}
}
运行报错:
Exception Type: System.Data.OleDb.OleDbException
ErrorCode: -2147467259
Errors: System.Data.OleDb.OleDbErrorCollection
Message: 未指定的错误
Source: Microsoft JET Database Engine
TargetSite: Void ProcessResults(Int32)

myCommand.Fill(myDataSet):显示为红色

奇怪的是,我在WEB.CONFIG中把刚才添加的<identity>节点去掉,上面的查询EXCEL就可以正常运行,但是生成EXCEL会报拒绝访问的错.
只要添上<identity>节点,EXCEL可以生成了,却又用不了查询了..整个项目都是如此,我新加文件,新写代码都是这样..怎么解决???
另外重要的一点:我在家里的windows 2003 上,运行都没有问题,WEB.CONFIG也有<identity>节点,两个功能都正常. 到公司后,系统是WINDOWS 2000,就出现上面所描述的问题.请有经验的大哥们发表发表意思吧.
...全文
1377 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuxuecharp 2005-10-25
  • 打赏
  • 举报
回复
忘了说了,我现在在公司的机器是在 域 里面的W2K
chuxuecharp 2005-10-25
  • 打赏
  • 举报
回复
再UP一下,急啊
chuxuecharp 2005-10-25
  • 打赏
  • 举报
回复
UP
LoveCherry 2005-10-24
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/810572/zh-cn
alien54155415 2005-10-24
  • 打赏
  • 举报
回复
我们以前遇到类似的问题,用的就是Dcomcnfg解决的,不过没仔细试,把三个选项都改到了最大,everyone也给最大
chuxuecharp 2005-10-24
  • 打赏
  • 举报
回复
........

还有没有高人.
alien54155415 2005-10-24
  • 打赏
  • 举报
回复
mark
hzw66 2005-10-24
  • 打赏
  • 举报
回复
利用.net 中带的工具在命令提示符下执行tlbimp excel.exe.这样就不会因为你的Excel是xp或2000的不同要去找不同的*.olb文件,还有一点就是因为在2000以后的版本中没有了excel9.olb这个文件了。

通过执行tlbimp excel.exe后我们会得到excel.dll文件。

只要有了这个Excel.dll,现在你就可以把这个文件放到站点根目录的bin目录中,并引用这个文件就不会有权限问题了
chuxuecharp 2005-10-24
  • 打赏
  • 举报
回复
顶!!!
chuxuecharp 2005-10-24
  • 打赏
  • 举报
回复
m_objExcel = new Excel.Application();
就报错了.
System.UnauthorizedAccessException: 拒绝访问。

ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。

若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。


我到底要在哪给它权限?????
chuxuecharp 2005-10-24
  • 打赏
  • 举报
回复
我在Dcomcnfg中配置了EXCEL的权限了,启动和访问都加上了ASPNET,还是不行.非得在WEB.CONFIG中加<identity>节点吗?哎.
hzw66 2005-10-24
  • 打赏
  • 举报
回复
权限问题:
当<identity impersonate="true" />存在时,用到的权限是IIS中的匿名帐号
当没有以上配置时,用到的权限是Win2000:ASPNET帐号,Win2003:Network Service
你必须对要操作的文件夹或组件添上相应的权限(如读或写权限)
你在本机上试的时候可能用了集成Windows身份验证,所以可能是管理员权限
你可以用
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
Response.Write("<br>");
Response.Write(User.Identity.Name);
Response.Write("<br>");
显示你的当前帐号和模拟帐号

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧