高分求助!急!

金枪-鱼 2005-06-06 01:29:33
本人用VB.NET编写一个Web程序的时候,中间调用了Excel,想实现Excel文件的导入。但运行时出现下面的问题提示,
--------------------------------------------
异常详细信息: System.UnauthorizedAccessException: 拒绝访问。

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

若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。
-----------------------------------------------
这个问题以前也有人遇到过,最后的解决方案好象说是要设置Web的Com组件的权限,我开始.NET时间不长,具体的进行相应的设置我不会,大家能否给我详细介绍一下。
还有一个问题更严重啦!就是我参考了以前相关帖子对于权限的设置,在开始-运行-dcomcnfg自己乱弄了一些权限的设置,并且在控制面板-管理工具-服务中修改了“COM+ Event System”中的权限!然后今天重新启动了机子,连IIS都不能正常连接了,说是没有权限访问,同时.NET也无法正常打开[同样提示没有权限]!这该怎么办,大家知不知道要把哪些权限设置回来才可以!救命啊!
...全文
95 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
金枪-鱼 2005-08-06
  • 打赏
  • 举报
回复
很不好意思,小弟过了这么久才来结帖!感谢大家以前对我的帮助!再次感谢
Ninputer 2005-06-13
  • 打赏
  • 举报
回复
While xlSheet.Cells(i, 1) <> "" '问题错误提示的位置.无法转换类型

改成

While xlSheet.Cells(i, 1).Value <> ""
金枪-鱼 2005-06-13
  • 打赏
  • 举报
回复
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlBook = xlApp.Workbooks.Open(Text1.text)
Set xlSheet = xlBook.Worksheets("Sheet1")
i = 2

While xlSheet.Cells(i, 1) <> "" //问题错误提示的位置.无法转换类型
i = i + 1
Wend
count = i - 2 [count为记录的条数]
conn.BeginTrans
For i = 2 To count + 1
sql = "select * from 员工基本信息表 where 员工编号='" & xlSheet.Cells(i, 1) & "'"
rs1.Open sql, conn, adOpenStatic, adLockOptimistic
If rs1.RecordCount <> 0 Then
flag = MsgBox("数据库中员工编号冲突,是否覆盖?", vbOKCancel, "系统警告")
If flag = vbOK Then
rs.Open sql, conn, adOpenStatic, adLockOptimistic
rs("员工编号") = xlSheet.Cells(i, 1)
rs("姓名") = xlSheet.Cells(i, 2)
rs("性别") = xlSheet.Cells(i, 3)
rs("民族") = xlSheet.Cells(i, 4)
rs("籍贯") = xlSheet.Cells(i, 5)
rs("学位") = xlSheet.Cells(i, 6)
rs("学历") = xlSheet.Cells(i, 7)
rs("政治面貌") = xlSheet.Cells(i, 8)
rs("部门") = xlSheet.Cells(i, 9)
rs("职务") = xlSheet.Cells(i, 10)
rs("工龄") = xlSheet.Cells(i, 11)
rs("工资等级") = xlSheet.Cells(i, 12)
rs("出生日期") = xlSheet.Cells(i, 13)
rs("参加工作时间") = xlSheet.Cells(i, 14)
rs("家庭住址") = xlSheet.Cells(i, 15)
rs("联系电话") = xlSheet.Cells(i, 16)
rs.Update
rs.Close
End If
Else
rs.Open "员工基本信息表", conn, adOpenStatic, adLockOptimistic
rs.AddNew
rs("员工编号") = xlSheet.Cells(i, 1)
rs("姓名") = xlSheet.Cells(i, 2)
rs("性别") = xlSheet.Cells(i, 3)
rs("民族") = xlSheet.Cells(i, 4)
rs("籍贯") = xlSheet.Cells(i, 5)
rs("学位") = xlSheet.Cells(i, 6)
rs("学历") = xlSheet.Cells(i, 7)
rs("政治面貌") = xlSheet.Cells(i, 8)
rs("部门") = xlSheet.Cells(i, 9)
rs("职务") = xlSheet.Cells(i, 10)
rs("工龄") = xlSheet.Cells(i, 11)
rs("工资等级") = xlSheet.Cells(i, 12)
rs("出生日期") = xlSheet.Cells(i, 13)
rs("参加工作时间") = xlSheet.Cells(i, 14)
rs("家庭住址") = xlSheet.Cells(i, 15)
rs("联系电话") = xlSheet.Cells(i, 16)
rs.Update
rs.Close
End If
PBar.Value = PBar.Value + 1
rs1.Close
Next i
conn.CommitTrans
conn.Close
金枪-鱼 2005-06-13
  • 打赏
  • 举报
回复
这几天在弄别的事情,在这里先要感谢大家的帮忙.现在我的权限设置已经没有问题了,不过现在对于实际的从Excel文件中读取数据,却有另外的问题.以下是我在VB下写的从Excel文件中读去数据的程序,是正确的,但放在VB.NET中,提示"无法从Range向String强制转化"?不知道是什么原因,在VB.NET下该怎么写实际的读取Excel的代码.下面是我在VB写的代码,希望大家帮我怎么在.net下解决问题
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlBook = xlApp.Workbooks.Open(Text1.text)
Set xlSheet = xlBook.Worksheets("Sheet1")
i = 2

While xlSheet.Cells(i, 1) <> ""
i = i + 1
Wend
count = i - 2 [count为记录的条数]
conn.BeginTrans
For i = 2 To count + 1
sql = "select * from 员工基本信息表 where 员工编号='" & xlSheet.Cells(i, 1) & "'"
rs1.Open sql, conn, adOpenStatic, adLockOptimistic
If rs1.RecordCount <> 0 Then
flag = MsgBox("数据库中员工编号冲突,是否覆盖?", vbOKCancel, "系统警告")
If flag = vbOK Then
rs.Open sql, conn, adOpenStatic, adLockOptimistic
rs("员工编号") = xlSheet.Cells(i, 1)
rs("姓名") = xlSheet.Cells(i, 2)
rs("性别") = xlSheet.Cells(i, 3)
rs("民族") = xlSheet.Cells(i, 4)
rs("籍贯") = xlSheet.Cells(i, 5)
rs("学位") = xlSheet.Cells(i, 6)
rs("学历") = xlSheet.Cells(i, 7)
rs("政治面貌") = xlSheet.Cells(i, 8)
rs("部门") = xlSheet.Cells(i, 9)
rs("职务") = xlSheet.Cells(i, 10)
rs("工龄") = xlSheet.Cells(i, 11)
rs("工资等级") = xlSheet.Cells(i, 12)
rs("出生日期") = xlSheet.Cells(i, 13)
rs("参加工作时间") = xlSheet.Cells(i, 14)
rs("家庭住址") = xlSheet.Cells(i, 15)
rs("联系电话") = xlSheet.Cells(i, 16)
rs.Update
rs.Close
End If
Else
rs.Open "员工基本信息表", conn, adOpenStatic, adLockOptimistic
rs.AddNew
rs("员工编号") = xlSheet.Cells(i, 1)
rs("姓名") = xlSheet.Cells(i, 2)
rs("性别") = xlSheet.Cells(i, 3)
rs("民族") = xlSheet.Cells(i, 4)
rs("籍贯") = xlSheet.Cells(i, 5)
rs("学位") = xlSheet.Cells(i, 6)
rs("学历") = xlSheet.Cells(i, 7)
rs("政治面貌") = xlSheet.Cells(i, 8)
rs("部门") = xlSheet.Cells(i, 9)
rs("职务") = xlSheet.Cells(i, 10)
rs("工龄") = xlSheet.Cells(i, 11)
rs("工资等级") = xlSheet.Cells(i, 12)
rs("出生日期") = xlSheet.Cells(i, 13)
rs("参加工作时间") = xlSheet.Cells(i, 14)
rs("家庭住址") = xlSheet.Cells(i, 15)
rs("联系电话") = xlSheet.Cells(i, 16)
rs.Update
rs.Close
End If
PBar.Value = PBar.Value + 1
rs1.Close
Next i
conn.CommitTrans
conn.Close
机器人 2005-06-07
  • 打赏
  • 举报
回复
设置完要重启
机器人 2005-06-07
  • 打赏
  • 举报
回复
使用Dcomcnfg配置asp.net对Excel的访问权限.

运行Dcomcnfg -> Microsoft Excel -> 属性 -> 安全

有三项,使用自定义访问权限, 添加everyone用户.
金枪-鱼 2005-06-06
  • 打赏
  • 举报
回复
To Ninputer(装配脑袋):
我的系统是Windows XP,里面的文件夹属性里没有"安全性"的选项啊!2000系统是有的!
还有,那个管理工具中的"Microsoft .NET Framework 1.1 Configuration"的配置,有些选项的内容和您所说的不太一样,上次乱设权限弄了一次弄怕了,这次不敢随便设啦!请问在Windows XP下面如何对权限进行相应的设置.先感谢
Ninputer 2005-06-06
  • 打赏
  • 举报
回复
是这样,Office对象要求对程序集配置“完全信任”信任级别。同时,ASP.NET用户必须对Office文件有Windows验证方式的访问权限。这两样都与COM无关。
你先把你刚刚改过的权限按原样改回去的说。
yankao 2005-06-06
  • 打赏
  • 举报
回复
本人也是刚学.net,路过学习一下!帮顶了!祝早日解决问题!
Ninputer 2005-06-06
  • 打赏
  • 举报
回复
1.打开存有Excel文件的那个文件夹,右键查看该文件夹的属性,选择“安全性”。然后选择“添加”选择添加ASPNET用户。然后为ASPNET用户指配“修改”权限

2.在管理工具中打开Microsoft .NET Framework 1.1 Configuration(配置),注意选择你机器上最高版本的.NET Framework配置。
选择:“配置代码访问权限”Configure Code Access Security Policy
再选择“提升程序集受信度”Increase Assembly Trust
然后从配置向导中选择你编写的dll,配置成“完全信任”Full Trust即可。我是英文版系统,所以其中若干用词可能会不同,你自己找下。
金枪-鱼 2005-06-06
  • 打赏
  • 举报
回复
我现在将乱设的权限弄回来了,IIS已经可以成功使用,可以打开了!但是运行有Excel有关的程序的时候,还是提示没有权限.下面是我引用到的程序
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim i As Integer
Dim count As Integer '记录条数
'----------------------------------------
运行到上面的程序时,就会提示
----------------------------------------------------------
ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。
----------------------------------------------------------
具体的权限怎么设置,哪位帮帮我,急!

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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