asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET常见错误大全


发布日期:2021年04月28日
 
ASP.NET常见错误大全

检测到有潜在危险的 RequestForm 值

原因:

()在提交数据的页面或webconfig中没有对validateRequest的属性进行正确的设置

()HTML里面写了两个<form>引起

解决:

方案一aspx文件头中加入这句 <%@ Page validateRequest=false %>

方案二 修改nfig文件:

<configuration>

<systemweb>

<pages validateRequest=false />

</systemweb>

</configuration>

因为validateRequest默认值为true只要设为false即可

在没有任何数据时进行无效的读取尝试解决办法

原因

所返回的sqldatareader无数据记录但没有作记录判断力处理返回的是空值

加上判断即可 if (readerread()) { TextNameText =

reader[FieldName]ToString(); }

数据为空不能对空值调用此方法或属性

原因:

若对象是null那么调用对象的方法例如ToString()肯定出错一般是数据库字段的值为空

在grideview等数据控件常出现

解决:因此建议作NULL处理

阅读器关闭时 FieldCount 的尝试无效

原因:

使用了SqlDataReader来绑定数据后将connection对象作了Close()处理

类似

public SqlDataReader GetSomething()

{

connopen();

SqlDataReader reader =

sqlcmdExcecutReader(CommandBehaviorCloseConnection));

connclose();// occur error here

return reader;

}

在绑定的时候调用了这个方法来指定数据源如果使用这个方法则需要在调用函数中关闭Re

ader这样conn就可以自动关闭

如果是使用的是SqlDataAdapter和DataSet那么请去掉显式关闭conn的调用或者在finally

中调用之

未能映射路径

原因:可能是在webconfig中的路径配置不正确所致在FCKEditor的配置中这种问题比较突出

<add key=FCKeditor:BasePath value=~/admin/fckeditor//>

<add key=FCKeditor:UserFilesPath value=/UserFiles/ />

Unreachable code detected

原因

一般是在异常处理理或返回值时使用了 throw 或return 可能是其位置放在前面造成后面的代码执行到了

解决

把相关的异常抛出处理的语句(throw)或return 的语句放到代理执行的最后一行

索引超出范围必须为非负值并小于集合大小

原因

()没有设置DATAKEYFIELD设为数据库中相对应的唯一字段(一般是主键)

()DataGridColumns > eItemCells

解决

()设置datakeyfield

()加入判断语句unt (datagrid可以是其它相类似的服务器控件)

数据源不支持服务器端的数据分页

解决方法:

不要使用DataReader改成使用DataSet或使用自定义分页形式不采用提供的分页功能

OleDbDataAdapter da = new OleDbDataAdapter(sql connection);

DataSet ds = new DataSet();

daFill(ds News);

GridViewDataSource = ds;

GridViewDataBind();

对象名***** 无效

原因:当前使用的数据库中没有*****这张表

解决: 查看是否程序中是否写错了所调用的表的名称或看一下SQL数据库中是否存在你所调用的表

在建立与服务器的连接时出错在连接到 SQL Server 在默认的设置下 SQL

Server 不允许进行远程连接可能会导致此失败 (provider: 命名管道提供程序

error: 无法打开到 SQL Server 的连接)

solution: 主机上需要用固定的IP地址或服务器地址

SqlDateTime 溢出必须介于 // :: AM 和 // :: PM

之间

出现这种问题``多半是因为你更新数据库时``datetime字段值为空``默认插入

日``造成datetime类型溢出

出现表示属性此处应为方法

原因:

VB与c#的方法属性的格式有所不一样导致

可能是在design中绑定数据的语法出现错误 解决: 记住属性用[] 方法用()

记住绑定数据的正确语法(有以下几种方式::<%ContainerDataItem(字段名)%> <%

#Eval(字段名)%> <%Bind(字段名)%>等)

未能从程序集DAL Version= Culture=neutral

PublicKeyToken=null中加载类型DALSqlHelper

原因:修改了其他层后未能重新编译成dll

解决:编译一下(Rebuild)

为过程或函数 指定的参数太多

solution:调用存储过程与定义的存储过程所用的参数数量或所执行的SQL语句中所传入的参

数个数不一致(这是个SQL的错误)

解决方案:仔细检查在存储过程中所设定的参数变量与实际输入的参数值是否一一对应

无法启动调试绑定句柄无效

原因:系统的Terminal Services没有开启

Unable to debugging on the web serverDebug failed because integrated windows authentication is not enable

解决方法:

打开vs>工具(Tools)>选项(Option)>调试(debugging)>编辑并继续(Edit and Continue)>全部打勾

Automation 操作中文件名或类名未找到: RegExp

解决方法:regsvr vbscriptdll

SystemNullReferenceException: 未将对象引用设置到对象的实例

原因:

()所设置的变量为空值或没有取到值一般出现在传递参数的时候出现这个问题也会在使用datagrid或gridview或datalist等数据控件时出现

()控件名称与codebehind里面的没有对应

()未用new初始化对象

()在程序中所引用的控件不存在

解决方法:

()使用trycatchfinally捕捉错误或直接用responsewrite()输出所取的变量值

()查看代码中是否存在未初始化的变量

错误 文件被数字签名策略拒绝(安装vssp时)解决方法:

() 单击开始单击运行键入 control admintools然后单击确定

() 双击本地安全策略

() 单击软件限制策略(注意如果未列出软件限制请右击软件限制策略然后单击新建策略 )

()对象类型双击强制

() 单击除本地管理员以外的所有用户然后单击确定

() 重新启动计算机

微软说明

vs不能从源文件模式切换到视图模式

解决方法:dos下运行下 devenv /resetskippkgs (win+r cmd)

Validation of viewstate MAC failed

解决办法:页面的顶部page加 EnableViewState=False EnableViewStateMac = False 来解决这个问题

Automation server cant create object(Automation 服务器不能创建)

解决办法:运行: Regsvr scrrundll 即可

包加载失败

未能正确加载包Visual Web Developer Trident Designer Package(GUID =

{AEECDEFAAEFF}

解决方法:

设置系统变量 VsLogActivity=

在%APPDATA%\Microsoft\VisualStudio\\文件夹下创建文件ActivityLogxml

Error

Microsoft Visual Studio

LoadLibrary failed for package [Visual Web Developer Trident Designer Package]

{AEEBCDEFAAEFF}

e

c:\Program Files\Microsoft Visual Studio \Common\Packages\tridsndll

从 WINNT\MicroSoftNET\Framework\vxxx 复制文件gdiplusdll 到 Program Files\Visual Studio \Common\Packages文件夹下

在命令行下运行命令 devenv /resetskippkgs

Error spawning cmdexe

解决方案:把cmdexe 拷贝到VS安装目录下的VC/BIN目录里可以解决问题

尝试读取或写入受保护的内存

解决:硬件有问题一般内存有问题

无法在证书存储区中找到清单签名证书

解决方法:用记事本打开项目的csproj文件删除类似

该项目中不存在目标ResolveKeySource

原因:这个问题很罕见查询国外相关资料后大致说是由于部署的不是一个标准的solution 需要在VS自带的命令提示中运行下面这个东西恢复

解决方法:

()将下列代码存为XML文件命名为TestBuildxml

<Project DefaultTargets=Build xmlns=>

<PropertyGroup>

<TargetConnectionString>Data Source=\sql%BUser ID=SqlUser%BPooling=False%BPassword=X</TargetConnectionString>

</PropertyGroup>

<ItemGroup>

<DatabaseProject Include=Database\Databasedbproj/>

<DatabaseProject Include=Database\Databasedbproj/>

</ItemGroup>

<Target Name=BuildAllDatabaseProjects>

<MSBuild

Properties=TargetConnectionString=$(TargetConnectionString)

Projects=@(DatabaseProject)

Targets=Build;Deploy>

</MSBuild>

</Target>

()在命令提示中运行:msbuild /t:BuildAllDatabaseProjects TestBuildxml

</Project>

不能将值 NULL 插入列 **

原因:这是数据库表设计的错误所涉及的表的字段中设置了不能为空的属性但是传入的值为null所以报错

解决方法:查看是否所传入的值是否为Null或修改数据库中表的所对应的列的属性

未能加载类型命名空间

原因:

()项目修改后没有进行编译

()项目中原有的命名空间可能被修改了

()项目中所需要的ascx或其他页面不存在或不包含在项目中

解决方法:

()在修改完成之后请重新生成或编译整个项目或解决方案

()手工修改所改动的命名空间注意名称的大小写再重新编译

()将相关的文件包含在项目中

不能访问只读文件*******

解决方案:

给虚拟目录所对应的文件加上Everyone/写入权限即可

请求因 HTTP 状态 失败Access Denied解决方法:在iis信息服务器上把匿名访问和允许iis控制密码给勾上

有一个无效 SelectedValue因为它不在项目列表中

原因

()在没有绑DropDownList之前就给DropDownListSelectedValue 赋值

()dropdownlist中出现了null值

无法在已存在的情况下创建/影像复制该文件

解决方案重新编译项目(多个project全部重新编译)关闭vs重新打开必要时重新启动机子

用户 C\ASPNET 登录失败登录失败

异常详细信息: SystemDataSqlClientSqlException: 用户 COO\ASPNET 登录失败

这是怎么回事啊?

因为你的程序连接SQLServer的连接字符串是用了windows集成登陆你可以改成用数据库帐号密码登陆连接字符串的写法是

server=localhost;uid=sa;pwd=xxxx;database=master;

server是数据库服务器的机器名或者IP如果是同一台机可以用localhost

uid是数据库登陆帐号

pwd是数据库密码

database是数据库初始owner名称

答案

右击桌面我的电脑选择管理双击打开的计算机管理对话框中的本地用户和组下的 在右边的窗口中双击Remote Desktop Users在打开的Remote Desktop Users属性对话框中 单击添加在打开的添加用户对话框中单击高级再单击立即查找按钮搜索结果中 双击ASPNET(如果是IISNETWOR SERVERCE)再点击两次确定完成添加用户

单击开始所有程序Microsoft SQL Server企业管理器在打开的控制台根目录 选择相应的数据库右击该数据库的中的用户选择新建数据库用户新建用户对话 框中点击登陆名右侧的下拉列表框选择新建打开新建登陆对话框点击名称右侧的 省略号按钮在打开的对话框中将列出的名称中选择本机的名称再在下面的名称框中选定Remote Desktop Users然后点击成员按钮双击 ASPNET(如果是IISNETWOR SERVERCE然后点击确定新建登陆对话 框中的默认设置的数据库选项中选择相应的数据库名称再在数据库访问选项下勾选相应 的数据库点击确定完成将默认的匿名用户添加到SQL

用户 nt authority\network service 登录失败

> sqlserver 调成sql server 和windows验证模式

>

(以下方法仅供参考)

第一步NT AUTHORITY\NETWORK SERVICE 添加到Administrator组中

我的电脑>右键>管理>本地用户和组

选择>双击Administrators>单击添加>单击高级>单击立即查找>在下面的列表中选择Network Service用户>两次单击确定>加入

第二步 在企业管理器中加入NetWord Service用户

打开Sql Server企业管理器>选择数据库实例>打开安全性节点>选择登录>在右边的列表中单击右键 >选择新建登录>在常规选项卡中单击名称旁边的按钮>选择Administrators >单击下面的成员按钮>选择Network Service>单击添加按钮>单击确定返回新建登录对话框>保证身份验证类型为windows验证允许访问>单击确定>关闭企业管理器

第三步

重新运行程序数据库连接字符串选择windows验证即可

> 在sqlserver中添加帐户或IIS_WPG工作组

此方法来自于

未能加载视图状态正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配例如当以动态方式添加控件时在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配

原因viewstate的在作用是将控件的状态保存在下次Post给服务器服务器进行恢复控件的状态(控件的状态包括值和事件

解决方法

()每一个UserControl的viewstate都改为false

()加入这个

thisPageEnableViewState = false;

此方法来源于_astar/archive////l

由于启动用户实例的进程时出错导致无法生成 SQL Server 的用户实例该连接将关闭

问题原因

这是微软的bug并且微软已经承认详情如下

出现此错误的条件是你用过远程桌面连接并且安装了SQL+VS就有很大可能触发这个问题微软说会在将来的XP SP里面解决掉这个问题

解决

ID=&SiteID=

如果你看不懂英文那么我告诉你我的解决办法

删除C:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS目录即可[USERNAME]是Windows用户名比如说Administrator

此问题来于

Server Application Unavailable

The web application you are attempting to access on this web server is currently unavailable Please hit the Refresh button in your web browser to retry your request

Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server Please review this log entry to discover what caused this error to occur

解决

如果你运行WinXP/IIS 为了给ASPNET工作进程访问你的web工程文件夹的权力请到网站文件所在的目录右键一级文件夹选Security-Add-键入ASPNET点击OK或点击Check Names如果弹出对话框提示Name not Found则应点击Locations改变位置到本机计算机名点击OK分配此用户权限为Full Control点击OK

错误变为

You are not authorized to view this page

You do not have permission to view this directory or page using the credentials you supplied

解决

在IIS里右键此虚拟目录-Properties-Directory Security-Edit勾选上Integrated Windows authentication即可

超时时间已到超时时间已到但是尚未从池中获取连接出现这种情况可能是因为所有池连接均在使用并且达到了最大池大小

可能原因如下并发操作Connection用后没有关闭或者因为DataReader连接独占连接

解决方法

修改几个关键页面或访问比较频繁的数据库访问操作使用DataAdapter和DataSet来获取数据库数据不要使用DataReader

在访问数据库的页面上使用数据缓存如果页面的数据不是经常更新(几分钟更新一次)的话使用Cache对象可以不用访问数据库而使用缓存中的内容那么可以大大减少连接数量

修改代码把使用Connection对象的地方都在Close()后面加上Dispose()调用

建议对数据库操作进行大的修改建立自己的数据库操作代理类继承SystemIDisposable接口强迫释放资源这样就不会出现连接数量不够的问题了

包加载失败

未能正确加载包Visual Web Developer Trident Designer Package(GUID =

{AEECDEFAAEFF}请与包供应商联系以获得帮助由于可能会发生环境损坏建议重新启动应用程序要禁止将来将来加载此包吗?可以使用devenv reswetskippkgs重新启用包加载

每次开机打开vs都会有这个提示

于是在google了一下发现很多方法都试过了只有一个解决一试就行

解决方法如下:

设置系统变量 VsLogActivity=

在%APPDATA%\Microsoft\VisualStudio\\文件夹下创建文件ActivityLogxml

从 WINNT\MicroSoftNET\Framework\vxxx 复制文件gdiplusdll 到 Program Files\Visual Studio \Common\Packages文件夹下

在命令行下运行命令 devenv /resetskippkgs

注:发现此问题只有在win会出现win就不会出现这个问题

用户xxx\ASPNET登录失败

第一步

NT AUTHORITYNetWORK SERVICE 添加到Administrator组中

我的电脑>右键>管理>本地用户和组

选择>双击Administrators>单击添加>单击高级>单击立即查找>在下面的列表中选Network Service用户>两次单击确定>加入

第二步 在企业管理器中加Network Service用户

打开Sql Server企业管理器>选择数据库实例>打开安全性节点>选择登录>在右边的列表中单击右键>选择新建登录>在常规选项卡中单击名称旁边的按钮>选择Administrators>单击下面的成员按钮>选择Network Service>单击添加按钮>单击确定返回新建登录对话框>保证身份验证类型为windows验证允许访问>单击确定>关闭企业管理器

第三步

重新运行aspNet程序数据库连接字符串选择windows验证即可

以上针对win如果是win 加ASpNet用户

无法在已存在的情况下创建/影像复制该文件

解决方法重新编译整个项目 或者重启电脑

Could not create an environment: OCIEnvCreate returned

解决方案一

主要是将oracle主目录oracle\的读写权限赋予或者是IUSER_和IWAM_重启计算机

解决二:

打开在IIS中的WEB属性--主目录--执行权限【改为-脚本和可执行文件】

-应用程序池【改为-MSSharePointAppPool】刷新OK

解决三:

文件夹权限可以不用管

设置ORACLE_HOME变量的方法如下

控制面板>>系统>>高级>>环境变量>>系统变量>>新建系统变量

变量名写ORACLE_HOME

变量值添实际的ORACLE_HOME路径在注册表中有

由于目标机器积极拒绝无法连接

在添加完引用后 用localhost替换掉所有的localhost:重新编译

能加载视图状态正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配例如当以动态方式添加控件时在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配

解决在页面的 Page 项添加 EnableViewState=false 即可

在以下方法或属性之间的调用不明确methodmethod

因隐式转换的缘故编译器无法调用重载方法的某种形式可以用以下方法纠正该错误

以不发生隐式转换的方式指定此方法的参数

移除此方法的所有重载

在调用方法之前强制转换到正确的类型

在应用程序级别以外使用注册为 allowDefinition=MachineToApplication

解决在网站对应的虚拟目录上右键选属性然后在应用程序名后点创建名字随便填

[子目录不会继承上级的属性所以要将aspx文件所在的目录属性设置正确]

无法识别的配置节connectionStrings

原因

用vs开发的应用程序需要使 framework 而在iis中的默环境是这时将发生不可识别的节点的问题

解决办法

环境升级为开始-》运行-》cmd-》

C:\WINDOWS\MicrosoftNET\Framework\v\aspnet_regiisexe i

Timeout expired The timeout period elapsed prior to obtaining a connection from the pool This may have occurred because all pooled connections were in use and max pool size was reached

Description: An unhandled exception occurred during the execution of the current web request Please review the stack trace for more information about the error and where it originated in the code

Exception Details: SystemInvalidOperationException: Timeout expired The timeout period elapsed prior to obtaining a connection from the pool This may have occurred because all pooled connections were in use and max pool size was reached

主要原因可能有

使用了连接池大量的sqlconnection用了后忘记关闸门导致SQL占用严重可以用 exec sp_who 这个存储过程查看一下

连接池的连接数有所限制

解决方法:

释放连接池调用Connection对象的Close()方法关闭数据库连接

利用try catch finally对数据库连接进行异常处理当无法连接数据库时将抛出异常并显示出错信息见catch代码块所示在此程序中无论是否发生异常都可以通过finally区块关闭数据库的连接从而节省计算机资源

将SqlConnection对象包含到using区块中这样程序会自动调用Dispose()方法释放SqlConnection对象所占用的系统资源无需再使用SqlConnection对象的Close()方法

指定min pool size表示连接池允许的最小连接数(默认为下面的代码指定了SqlConnection对象的max pool size为min pool size为

SqlConnection mySqlConnection = new SqlConnection(server=localhost;database=Northwind;)

               

上一篇:稀疏平常的ASP.NET Session Lost问题

下一篇:将Asp.net页面输出为HTML