工作中碰到的小问题

工作过程中的时常会碰到一些小问题,贴出来,供大家参考
1. [标题:] [ASP.NET]System.UnauthorizedAccessException: 拒绝访问。
[关键字:] 异常详细信息: System.UnauthorizedAccessException:拒绝访问
[问题描述:]导出数据到Excel,报错;
[报错抓图]
[解决方法:]当试图在ASP.NET里面使用COM对象的时候,常常出现这个异常。
可以尝试在web.config里面添加以下一行以解决这个问题
了解一下,有关<identity impersonate= “true”/>的用途:
使用扮演(Impersonate)在Web.Config中有一个<identity>元素,可以使其impersonate属性为true来设置本应用程序的身份,从而达到扮演其他账号身份的目的。而具体的“扮演”有两种方式:
(1)、<identity impersonate="true" />
这种方式的话ASP.NET进程将扮演http/https请求者的身份。而具体是什么帐号,就跟IIS的安全性设定有关了:
如果IIS允许匿名访问,那么被扮演的将是Iuser_Machine帐号(因为默认的匿名访问账号是Iuser_Machine,当然如果修改过,那被扮演的就是修改过的帐号)。
如果IIS不允许匿名访问,那么浏览器请求者的身份肯定是一个Windows帐号,这个帐号就是被扮演的对象。
(2)、<identity impersonate="true" userName="Account" password="Password"/>
这种方式就直接设置所扮演的固定用户身份
第(2)种扮演方法将把password明文的写在Web.Config里,很不安全,
所以你可以使用第(1)种扮演方法,在把IIS里把该虚拟目录默认的匿名访问账号改为有//SeverB/share权限的账号,再在Web.Config里添加了<identity impersonate="true" />

2.[标题:]无法在web服务器上启动调试。
[关键字]无法在服务器上启动调试。
[问题描述无法在服务器上启动调试。
[报错抓图]
[解决方法:] 原因是没有配置IIS;或者webconfig配置debug=false,修改为true。

3. Server.MapPath()
[标题:] Server.MapPath()
[关键字:] Server.MapPath()
[问题描述:]获取相对路径,不清楚
[报错抓图]先看图:
[解决方法:]
1. 首先在本机E盘下面建立red文件夹,夹子内继续建立conn.asp文件,文件内容如下:
<%=Server.Mappath("database/cnbruce.mdb")%>
<%=Server.Mappath("/database/cnbruce.mdb")%>
<%=Server.Mappath("../database/cnbruce.mdb")%>
主要调试三种路径最后显示的结果。
2,在red文件夹下面建立文件夹database,该夹子内部存放cnbruce.mdb文件。
所以现在可以很肯定的知道数据库文件的绝对路径是:E:/red/database/cnbruce.mdb
以上应该没有问题吧,很明白的继续往下看,不明白的赶快学下windows操作系统 -_-!
3,为了进行比较对照,继续在red文件夹下面建立blue文件夹,该夹子内部存放同样的conn.asp文件
<%=Server.Mappath("database/cnbruce.mdb")%>
<%=Server.Mappath("/database/cnbruce.mdb")%>
<%=Server.Mappath("../database/cnbruce.mdb")%>
4,当然很重要的就是对red文件夹进行虚拟目录的设定。方法是在red文件夹上右键鼠标,选择“共享...”,弹出窗口中继续选择“Web共享”标签,选择“共享这个文件夹”,别名设为“red”。最后“确定”。
5,OK,现在就可以来调试两个conn.asp文件了。
先看red文件夹下面的,输入的URL应该是:http://localhost/red/conn.asp

观看结果可以知道其中只有一个正确,那就是
<%=Server.Mappath("database/cnbruce.mdb")%>
6,再来看red文件夹下的blue文件夹内的, URL:http://localhost/red/blue/conn.asp
观察结果,仍然有一个正确,那就是
<%=Server.Mappath("../database/cnbruce.mdb")%>
7,来总结下:为什么两次显示正确路径的不是同一代码呢?
很显然是相对路径的缘故。red文件夹下的conn.asp文件和database文件夹是兄弟关系,所以要找到cnbruce.mdb,就可以直接database/cnbruce.mdb
而blue文件夹下的conn.asp和database文件夹是侄叔关系,要找cnbruce.mdb,当然是../database/cnbruce.mdb,其中../就是到上一层。
8,那再看<%=Server.Mappath("/database/cnbruce.mdb")%>两次显示的都是一样的效果,都指向到c:/inetpub/wwwroot/下面了,那就是因为在"database"前面添加了"/",表示到达根目录,而本地的IIS虚拟根目录就是c:/inetpub/wwwroot/,这在默认Web站点属性里面有。
9,注意,再看!一直都是在本地的,那上传到网络上有是怎么样呢?
首先,要正确清醒地知道conn.asp连接文件和*.mdb数据库文件的地址关系
接着,选择正确的Server.Mappath转换方法
建议,最好不采用"/"路径。因为这涉及到虚拟主机和非虚拟主机的问题。
所谓虚拟主机,比如我本人的站点,其虚拟的根目录就是网站本身的根目录,不存在转向到c:/inetpub/wwwroot/的问题。
可以调试
http://www.cnbruce.com/red/conn.asp
http://www.cnbruce.com/red/blue/conn.asp
可以看出:采用"/"的时候的路径显示就是本站的根地址。
而象6to23之类就不一样了。
http://asp3.6to23.com/zjfmeteor/red/conn.asp
http://asp3.6to23.com/zjfmeteor/red/blue/conn.asp
因为域名以及虚拟地址的分配都出来的zjfmeteor,所以采用"/"时就非站点根,是站点根再加自己的注册名。
综上,一般最好不采用"/",当采用另两种时就要注意conn.asp文件和数据库文件的相对路径了。
10,一定要注意!
万里长征已经到最后了,说什么也要支持住~!
我们虽然知道了conn.asp文件内容的写法,但在我们引用的时候应该要注意include包含文件的实质:被包含文件是在包含文件中执行显示的。
所以,无论conn.asp放在哪里,无论conn.asp的内容如何,最后都是取决于包含该文件的文件位置和数据库的位置关系。

4.[标题:] 试图运行项目时出错: 无法在 Web 服务器上启动调试。您没有调试该服务器的权限。
[关键字:]
[问题描述:]
[报错抓图:]
---------------------------
Microsoft 开发环境
---------------------------
试图运行项目时出错: 无法在 Web 服务器上启动调试。您没有调试该服务器的权限。
验证您是服务器上“Debugger Users”组的成员。
---------------------------
确定   帮助  
---------------------------
[解决方法:]
原因:IE没有使用当前的登录用户
解决方法:
1、将 http://localhost/ 从可信站点删去,加到intranet
2、在IE选项->"安全设置"->"可信站点"->"自定义级别"里有"用户验",确认选中"自动使用当前用户名和密码登录"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值