【标题】 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”。
源错误:
行 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>
|
源文件: 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: 将截断字符串或二进制数据。语句已终止。
源错误:
行 49: SqlCommand cmd=new SqlCommand(sql,con);
行 50: con.Open();
行 51: cmd.ExecuteNonQuery();
行 52: con.Close();
行 53: }
|
源文件: D:\Evenjoint\89178\web\ad_component\ADConnection.cs 行: 51
【原因】输入的字段长度超过了数据表中定义的长度.
【错误提示】
“/”应用程序中的服务器错误。
分析器错误
说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。
分析器错误信息: 未能加载类型“woall.getPWD”。
源错误:
行 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>
|
源文件: 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 不是非负数且小于总行数。
源错误:
行 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: }
|
源文件: d:\evenjoint\adcms\admin\adleavewordmanager.aspx.cs 行: 749
堆栈跟踪:
[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
|
版本信息: 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 不存在或访问被拒绝。
源错误:
行 2427: cmd.CommandType = CommandType.StoredProcedure;
行 2428:
行 2429: connection.Open();
行 2430: SqlCommandBuilder.DeriveParameters(cmd);
行 2431: connection.Close();
|
【原因】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 [email protected]
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Runtime.InteropServices.COMException: 服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for [email protected]
源错误:
行 199: SmtpMail.SmtpServer="127.0.0.1";
行 200:// SmtpMail.SmtpServer="smtp.163.com";
行 201: SmtpMail.Send(mail);
行 202:
行 203: ret=true;
|
源文件: d:\evenjoint\passport\passport_web\test_page.aspx.cs 行: 201
堆栈跟踪:
[COMException (0x8004020f): 服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for [email protected]
|
【解决方法】 打开IIS服务器,默认SMTP虚拟服务器—>属性 如下图: 添加可以通过此虚拟服务进行中继的计算机。 【测试结果】 成功地通过自己创建的smtp服务器发送邮件。 【错误提示】
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。
源错误:
行 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:
|
源文件: 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的支持。
|
请发表评论