ASP.NET常见错误,原因及解决方法
作者:LiJun027 日期:2007-06-20
【错误提示】
异常详细信息: System.Net.WebException: 请求因 HTTP 状态 401 失败:Unauthorized。
源错误:
行 35: [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/HelloWorld", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
行 36: public string HelloWorld() {
行 37: object[] results = this.Invoke("HelloWorld", new object[0]);
行 38: return ((string)(results[0]));
行 39: }
【原因分析】
1、用的是windows2003,.net framework1.1,.net2003
2、应该有权限访问,因为原来用程序是可以的,现在用IE 去访问还是可以的,但程序不行;
3、iis 没有什么异常,从iis 里面直接浏览调用web 方法没有问题;
4、认证方式没有改变一直用的都是windows,改成none 也不行;
5、一开始就安装了WSE1.1,是可以的,后来升级到WSE2.0,就不行了,然后卸载了WSE2.0,装上WSE2.0 SP1 还是不行,后来又卸载掉WSE2.0 SP1 还是不行,再重装WSE2.0 SP1 还是不行,不得其解,现在试试卸载掉WSE2.0 SP1 重新用WSE1.1 看行不行,请各位多多帮忙啊。
什么是WSE
【解决方法】
在调用Web Service方法前,加上一句 System.Net.CredentialCache.DefaultCredentials
即:
myWS.Credential =System.Net.CredentialCache.DefaultCredentials;
myWS.wsMethod();
【错误提示】
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 39:
行 40: QID=Request.QueryString["QID"];
行 41: title=Server.UrlDecode(Request.QueryString["title"]).ToString();
行 42: strOperation="select * from AD_QAnswer where QID="+QID;
行 43: strTableName="Answer";
源文件: d:/evenjoint/89178/web/adcms/agent/qa/adminqadetail.aspx.cs 行: 41
【原因】变量title未赋初值,即Server.UrlDecode(Request.QueryString["title"]).ToString()执行的结果为 null
【错误提示】
System.FormatException: 索引(从零开始)必须大于或等于零,且小于参数列表的大小。
【原因】索引个数与参数个数不同,如下:11个索引,10个参数
string str=String.Format("Insert INTO AD_CARVEOUT VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')",this.UserName,this.Name,this.Sex,this.Age,this.Tel,this.Email,this.Area,this.Money,this.Trade,this.ProjectSummary);
【错误提示】
trueSystem.Data.SqlClient.SqlException: 第 1 行: ',' 附近有语法错误。
【原因】列类型为char,但在连接数据库时只使用了该列的变量,没有为变量加引号
string str=String.Format("Insert INTO AD_CARVEOUT VALUES ({0},'{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')",this.UserName,this.Name,this.Sex,this.Age,this.Tel,this.Email,this.Area,this.Money,this.Trade,this.ProjectSummary);
注意:{0}没加单引号
【错误提示】
trueSystem.Data.SqlClient.SqlException: 数据库 'AD_CMS' 的日志已满。请备份该数据库的事务日志以释放一些日志空间。
【原因】日志满了,清空办法:
purpleazi 发表于 2006-7-9 22:18:20
1:截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG
2:清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
3: 删除LOG
1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K
再将此数据库设置自动收缩
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs.mdf'
4: 如果想以后不让它增长
企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)
--SQL语句的设置方式:
alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)
5.设置为自动收缩
企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"
【错误提示】
说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。
分析器错误信息: 未能加载类型“adcms.agentNew.test.gonggao2”。
源错误:
|
源文件: D:/Evenjoint/89178/web/adcms/agentnew/test/gonggao2.aspx 行: 1
【原因】后置代码没有声明引用的命名空间
using my_classLibrary;
【错误提示】
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 将截断字符串或二进制数据。语句已终止。
源错误:
|
源文件: D:/Evenjoint/89178/web/ad_component/ADConnection.cs 行: 51
【原因】输入的字段长度超过了数据表中定义的长度.
【错误提示】 说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。
分析器错误信息: 未能加载类型“woall.getPWD”。
源错误:
|
源文件: D:/work/woall_last/getpwd.aspx 行: 1
“/”应用程序中的服务器错误。
分析器错误
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573
“/adcms”应用程序中的服务器错误。
将截断字符串或二进制数据。语句已终止。
“/”应用程序中的服务器错误。
分析器错误
版本信息: Microsoft .NET Framework 版本:1.1.4322.2300; ASP.NET 版本:1.1.4322.2300
【原因】没有编译后台代码,直接输网址想查看结果.编译下就好了.
【错误提示】说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.IndexOutOfRangeException: 索引 0 不是非负数且小于总行数。
源错误:
|
源文件: d:/evenjoint/adcms/admin/adleavewordmanager.aspx.cs 行: 749
堆栈跟踪:
|
【原因】
ADCommon.CreateDataSet(queryUserid,null).Tables[0].DefaultView[0][0]为空,不能转化为string.
【错误提示】 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: SQL Server 不存在或访问被拒绝。
源错误:
|
“/”应用程序中的服务器错误。
索引 0 不是非负数且小于总行数。
版本信息: Microsoft .NET Framework 版本:1.1.4322.2300; ASP.NET 版本:1.1.4322.2300
“/”应用程序中的服务器错误。
SQL Server 不存在或访问被拒绝。
【原因】http://www.blogcn.com/u/13/35/internat/index.html (有图)
【错误提示】Automation 服务器不能创建对象
【解决方法】
开始--运行--regsvr32 scrrun.dll
访问某些网站的时候,如果出现"Automation 服务器不能创建对象"的错误提示框,表明网页内的对象需要scrrun.dll的支持.
不用重新安装操作系统和vs.net
有些脚本需要微软的 MSXML 控件才能进入。当使用 IE 5 以上版本的缺省安全模式时,会提示是否接受 MSXML 控件,如果接受,MSXML 将自动安装到您的机器上(得等上几分钟)。如果自动安装不成功,可以自行下载和安装 MSXML 3.0。
如果安装 MSXML 3 后仍然出现 'Automation 服务器不能创建对象' 错误,是因为您的机器禁止了所有的 ActiveX, 一般将 IE 的安全模式设为“中”即可。
【错误提示】
NT AUTHORITY/NETWORK SERVICE
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.UnauthorizedAccessException: NT AUTHORITY/NETWORK SERVICE
ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}/ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。
若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。
【分析】
windows2003的.NET用户是NETWORK SERVICE 而非XP中的asp.net,当ASP.NET对要访问的文件没有权限时,就会出现上面的错误提示.
【解决方法】
要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。加入【NETWORK SERVICE】帐户,选中所需访问权限对应的框。
【错误提示】
无法直接启动带有"类库输出类型"的项目.
【解决方法】
在有启动页的项目上单击右键,选择“设为启动项目”.
一般来说,只有web项目和winform项目可以启动。其它的项目都是dll,不能启动的。
【错误提示】
无法在Web服务器上启动调试,未将项目配置为进行调试.
【解决方法】
IIS根目录不正确.(这种情况为切换根路径或移植项目所致)
其它原因:http://www.cnblogs.com/time-is-life/articles/460348.html
【错误提示】
【解决方法】
类型不是Label,改为LinkButton就OK了.
【错误提示】
【解决方法】
在IIS上配置一下虚拟目录就OK了!
开发的时候需要虚拟目录, web.config 文件一定要放在站点根目录下或者虚拟目录下,否则就会出错
【实现目的】
在windows 2003 上配置smtp服务器,利用MailMessage 发送邮件
【错误提示】
服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for david.weihw@gmail.com
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Runtime.InteropServices.COMException: 服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for david.weihw@gmail.com
源错误:
|
源文件: d:/evenjoint/passport/passport_web/test_page.aspx.cs 行: 201
堆栈跟踪:
|
【解决方法】
打开IIS服务器,默认SMTP虚拟服务器—>属性
如下图:
添加可以通过此虚拟服务进行中继的计算机。
【测试结果 】
成功地通过自己创建的smtp服务器发送邮件。