您的位置:首页 > 编程语言 > ASP

ASP.NET常见错误,原因及解决方法(2003版)_不断更新.....

2007-01-18 13:59 881 查看
【标题】
ASP.NET常见错误,原因及解决方法
【错误提示】
异常详细信息: 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”。

源错误:

[code]行 1:  <%@ Page language="c#" Codebehind="gonggao2.aspx.cs" AutoEventWireup="false" Inherits="adcms.agentNew.test.gonggao2" %>
行 2:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
行 3:  <HTML>

[/code]
源文件: D:\Evenjoint\89178\web\adcms\agentnew\test\gonggao2.aspx 行: 1

版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573

【原因】后置代码没有声明引用的命名空间
using my_classLibrary;

【错误提示】

“/adcms”应用程序中的服务器错误。

将截断字符串或二进制数据。语句已终止。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 将截断字符串或二进制数据。语句已终止。

源错误:

[code]行 49:             SqlCommand cmd=new SqlCommand(sql,con);
行 50:             con.Open();
行 51:             cmd.ExecuteNonQuery();
行 52:             con.Close();
行 53:         }

[/code]
源文件: D:\Evenjoint\89178\web\ad_component\ADConnection.cs 行: 51

【原因】输入的字段长度超过了数据表中定义的长度.

【错误提示】

“/”应用程序中的服务器错误。

分析器错误

说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。

分析器错误信息: 未能加载类型“woall.getPWD”。

源错误:

[code]行 1:  <%@ Page language="c#" Codebehind="getPWD.aspx.cs" AutoEventWireup="false" Inherits="woall.getPWD" %>
行 2:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
行 3:  <HTML>

[/code]
源文件: D:\work\woall_last\getpwd.aspx 行: 1

版本信息: Microsoft .NET Framework 版本:1.1.4322.2300; ASP.NET 版本:1.1.4322.2300

【原因】没有编译后台代码,直接输网址想查看结果.编译下就好了.

【错误提示】

“/”应用程序中的服务器错误。

索引 0 不是非负数且小于总行数。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.IndexOutOfRangeException: 索引 0 不是非负数且小于总行数。

源错误:

[code]行 747:            {
行 748:                string queryUserid = string.Format(@"select contentOwnerID from ad_content where contentid={0}",ddlAD.SelectedItem.Value);
行 749:                tempUserid =  Convert.ToInt32(ADCommon.CreateDataSet(queryUserid,null).Tables[0].DefaultView[0][0].ToString());
行 750:                tempUserType = 3;
行 751:            }

[/code]
源文件: d:\evenjoint\adcms\admin\adleavewordmanager.aspx.cs 行: 749

堆栈跟踪:

[code][IndexOutOfRangeException: 索引 0 不是非负数且小于总行数。]
System.Data.DataView.GetElement(Int32 index) +43
System.Data.DataView.get_Item(Int32 recordIndex) +5
adcms.admin.adleavewordmanager.btnExportByDate_Click(Object sender, EventArgs e) in d:\evenjoint\adcms\admin\adleavewordmanager.aspx.cs:749
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292

[/code]
版本信息: Microsoft .NET Framework 版本:1.1.4322.2300; ASP.NET 版本:1.1.4322.2300

【原因】
ADCommon.CreateDataSet(queryUserid,null).Tables[0].DefaultView[0][0]为空,不能转化为string.

【错误提示】

“/”应用程序中的服务器错误。

SQL Server 不存在或访问被拒绝。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: SQL Server 不存在或访问被拒绝。

源错误:

[code]行 2427:			cmd.CommandType = CommandType.StoredProcedure;
行 2428:
行 2429:			connection.Open();
行 2430:			SqlCommandBuilder.DeriveParameters(cmd);
行 2431:			connection.Close();

[/code]
【原因】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

源错误:

[code]行 199:				SmtpMail.SmtpServer="127.0.0.1";
行 200://				SmtpMail.SmtpServer="smtp.163.com";
行 201:				SmtpMail.Send(mail);
行 202:
行 203:				ret=true;

[/code]
源文件: d:\evenjoint\passport\passport_web\test_page.aspx.cs 行: 201

堆栈跟踪:

[code][COMException (0x8004020f): 服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for david.weihw@gmail.com

[/code]
解决方法
打开IIS服务器,默认SMTP虚拟服务器—>属性
如下图:



添加可以通过此虚拟服务进行中继的计算机。

测试结果
成功地通过自己创建的smtp服务器发送邮件。

【错误提示】
Visual Studio .NET 无法创建应用程序 <application>。问题很可能是因为本地 Web 服务器上没有安装所需的组件
【解决方法】以下摘自:CSDN


1、当站点主目录没有创建应用程序:

通过FP扩展+虚拟目录的方式来建立WEBAPP,步骤如下:

(1)、右击站点---所有任务--配置服务器扩展

(2)、建立虚拟目录***,并使其配置应用程序

(3)、在VS中建立WEB项目,名称也为***

(4)、通过通过FP扩展来建立WEB

2、当站点主目录创建应用程序:

第一种方法--FP扩展:

(1)、右击站点---所有任务--配置服务器扩展

(2)、在VS中建立WEB项目,名称自己随便定

(3)、通过通过FP扩展来建立WEB

第二种方法--WEB共享:

(1)在IIS中将IP地址改为全部未分配

(2)将地址改为127.0.0.1或LOCALHOST

3、还不能建立时请试用下列方法:

(1)“站点”---右键---“属性”---“所有任务”---“重新计算 Web 上的超链接”

然后在vs.net下通过frontpage服务器扩展创建

(2)指示要通过文件共享直接访问 Web 服务器上的项目文件;不需要在该服务器上安装 FrontPage 服务器扩展。
安装 Visual Studio .NET 时,将创建一个“VS Developers”(VS 开发人员)用户组,并授予该用户组对 inetpub\wwwroot 文件夹的读/写权限。想使用计算机上的文件共享创建 Web 项目的任何用户都需要添加到“VS Developers”(VS 开发人员)用户组中。新建的“VS Developers”(VS 开发人员)组没有任何成员,所以,即使是安装 Visual Studio 的用户,也必须手动将自己添加到这个组中。
如果不希望将 Visual Studio 安装到服务器上,可以通过 Visual Studio 安装程序仅安装服务器组件,以创建“VS Developers”(VS 开发人员)组。

(3)win2003下:

在VS.NET中,为了测试URL和UNC, VS.NET会在目录下面生成一个.tmp文件,然后通过HTTP对该文件发出请求。但是在IIS 6中,出于安全考虑,tmp文件没有注册,默认情况下,会被block然后产生HTTP 404错误。

解决这个问题,请您参阅下面的方法:

1。打开IIS管理器。

2。右键点击"Default Web Site"并选择Properties.

3。 点击"Http Header".

4。 点击"MIME Types".

5。 点击“New”。

6。 在Extension中,输入".tmp". (不需要引号)

7。 在MIME Type中,输入 "Temp". (不需要引号)

还有一种解决方法,您可以使用下面的命令行:

%systemdrive%\inetpub\adminscripts\adsutil.vbs set w3svc/1/root/MimeMap .tmp,temp

在创建Web Application时,VS.Net需要在创建路径下创建后缀名为.tmp的临时文件。
当VS.Net创建好项目之后,就会以HTTP的方式向Web文件夹寻求项目文件,同时也寻求临时文件。由于windows2003在某些安装步骤下的IIS没有把.tmp文件设置为MIME类型,所以IIS向VS.Net返回了未知文件类型的错误,即找不到文件。所以VS.Net认为你的IIS路径设置不对。

补充一点:当出现这种情况时,想想看最近是否修改过IP地址。如果修改过,请改回原来的地址。

1、当修改的地址与原来的同属一个网段的话,不会发生这种问题。
2、当修改的地址与原来的不属一个网段的话,比如,由192.168.0.153改为192.168.1.153,可能发生这种问题。
至少我遇到了这种问题。

【错误提示】

“/”应用程序中的服务器错误。

配置错误

说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误信息: 未能从程序集 SSO 中加载类型 Keeper。

源错误:

[code]行 16:       <!--<add name="keeper" type="SSO.Keeper"/>-->
行 17:       <!--<add type="Keeper,SSO.DLL"  name="keeper"/>-->
行 18:       <add type="Keeper,SSO"  name="Keeper"/>
行 19:     </httpModules>
行 20:

[/code]
源文件: D:\evenjoint\SSO\SSOSite\web.config 行: 18

版本信息: Microsoft .NET Framework 版本:1.1.4322.2300; ASP.NET 版本:1.1.4322.2300

【解决方法】
查询MSDN , 引用模块的语法为:
<add type="classname,assemblyname" name="modulename"/>
哈哈,说的不够详细,要在类名前加上“命名空间”,改为
<add type="SSO.Keeper,SSO" name="Keeper"/> 即可解决问题。

【倡议】
建议大家把.NET开发中遇到的问题总结出来,在这里共享。感谢Axzhz的支持。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: