(C#)asp_net调试错误解决方法收集(1) 2007-11-2309:20 一、异常详细信息:System.InvalidOperationException:对于不返回任何键列信息的SelectCommand不支持UpdateCommand的动态SQL生成。 源错误: 行156:publicvoidbuilderEditClose() 行157:{ 行158:ada.Update(ds); 行159:Close(); 行160:ds.Clear(); 然后就是最后的更新,当然是用DataAdapter的Update()方法借助CommandBuilder来实现,要注意的是,返回的错误将是“对于不返回任何键列信息的SelectCommand不支持UpdateCommand的动态SQL生成。”这是因为我们用的Update()实际上是通过CommandBuilder动态生成sql语句,然后才进行的数据库操作。这一点是必须要牢记的。 二、源错误: 执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 堆栈跟踪: 出现这个错误肯定是数据库的原因 1。查看数据库是否为只读 2.数据库所在文件夹是否有可写权限 3。查看你的语句是否有问题 4。若有时候有,有时候没有,一般为数据库并发访问锁表适成的,检查对数据库的访问,保证每次对数据库操作结束后关闭连接 总之你必须总结出什么时候报错是所有时候还是操作某个表的时候 三、调试ASP.NET应用程序时出现"未将项目配置为进行调试"的错误信息 症状 当您在VisualStudio.NET中调试ASP.NET应用程序时,可能会出现下面的错误信息: Error while trying to run project:Unabletostartde bugging on the webserver.The project is not configured to be debugged For ASP.NET projects,verify that you have a valid projectfile called"Web.config"fortheURLspecifiedand"debug"issetto "true"inthatfile. For ATLServerprojects,verify that the"DEBUG"verbisassociated With yourISAPIextension. Would you like to disable future attempts to debug ASP.NET pagesfor This project? 原因 出现此错误主要是因为下列原因: ASP.NET应用程序没有Web.Config文件。 "Internet服务管理器"中当前项目文件夹的执行许可属性设置为了无。 解决方案 若要解决此问题,请根据您的具体环境,使用以下方法之一: 如果您的项目没有Web.config文件,则向包含该ASP.NET应用程序的目录添加一个Web.config文件。如果您是在VisualStudio.NET中工作,则用右键单击"项目资源管理器"中的项目,单击添加新项,然后单击Web配置文件。 如果您的项目已经有了Web.config文件,而且该Web.config文件的"编译"部分中debug属性设置为了true,则请按照下列步骤设置该项目文件夹的执行许可属性: 1启动"Internet服务管理器",然后单击要尝试进行调试的项目。 2右键单击该项目,然后单击属性。 3单击目录选项卡。 4如果在执行许可列表中选择了无,则单击"仅显示脚本"然后单击应用。 四、在发送调试HTTP请求时出现"无法启动调试"的错误信息 症状 当您在VisualStudio.NET中调试ASP.NET应用程序时,可能会出现下面的错误信息: Errorwhiletryingtorunproject:Unabletostartdebuggingonthe webserver.Server-sideerroroccurredonsendingdebugHTTPrequest. Makesuretheserverisoperatingcorrectly.Makesuretheserveris operatingcorrectly.YoumayalsowanttorefertotheASP.NETand ATLServerdebuggingtopicintheonlinedocumentation.Wouldyou liketodisablefutureattemptstodebugASP.NETpagesforthis project? 原因 如果ASP.NET应用程序的Web.config文件中有语法错误,就会发生此问题。 解决方案 若要解决此问题,要确保Web.config文件中的可扩展标记语言(XML)有效且格式正确。此外,还要记住Web.config中的一切字符都是区分大小写的。 五、调试ASP.NET应用程序时出现"访问被拒绝。请检查计算机调试管理器的DCOM配置设置。"的错误信息 症状 当您在VisualStudio.NET中远程调试ASP.NET应用程序时,可能会出现下面的错误信息: Errorwhiletryingtorunproject:Unabletostartdebuggingonthe webserver.Accessisdenied.ChecktheDCOMconfigurationsettings forthemachinedebugmanager.Wouldyouliketodisablefuture attemptstodebugASP.NETpagesforthisproject? 原因之所以会发生此错误是因为试图进行远程调试的用户不是MicrosoftInternetInformationServer(IIS)服务器上"调试器用户"组的成员。 解决方案 若要将适当的用户添加到"调试器用户"组中,请在Web服务器上按照下列步骤操作: 1从Windows开始菜单中,指向程序,指向管理工具,然后单击计算机管理。 2在左窗格中,单击以展开计算机管理,系统工具和本地用户和组节点。 3单击组,然后双击调试器用户。 4在调试器用户属性对话框中,单击添加。 5在选择用户或组对话框中,选择适当的用户,然后单击确定。 6单击确定退出调试器用户属性对话框。 7关闭"计算机管理"资源管理器。 六、调试ASP.NET应用程序时出现"无法在Web服务器上启动调试"的错误信息 症状 当您在VisualStudio.NET中调试ASP.NET应用程序时,可能会出现下面的错误信息: Errorwhiletryingtorunproject:Unabletostartdebuggingonthe webserver.Wouldyouliketodisablefutureattemptstodebug ASP.NETpagesforthisproject? 原因 之所以发生此错误是因为MicrosoftInternetInformationServer(IIS)未运行或者运行不正常。 解决方案 若要解决此问题,必须重新启动IIS。为此,请在命令提示符处键入iisreset。 七、调试ASP.NET页时VisualStudio.NET调试器不在断点停止 症状在VisualStudio.NET中调试ASP.NET应用程序时,调试器可能不在断点处停止。 原因 之所以会发生此问题,是因为在应用程序中未启用ASP.NET调试。 解决方案 若要解决此问题,请在VisualStudio.NET中按照下列步骤操作: 1在"解决方案资源管理器"中,选择项目名称。 2在项目菜单中,单击属性。 3单击以展开配置属性节点。 4在调试下的启用ASP.NET调试列表中,单击True。 说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息:System.Data.OleDb.OleDbException:操作必须使用一个可更新的查询。 八、无法调试ASP.NETWeb应用程序 症状 当您在MicrosoftVisualStudio.NET中调试ASP.NET应用程序时,可能会显示下面的Microsoft 开发环境错误信息: Errorwhiletryingtorunproject:Unabletostartdebuggingontheweb server.TheserverdoesnotsupportdebuggingofASP.NETorATLServer applications.RunsetuptoinstalltheVisualStudio.NETserver components.Ifsetuphasbeenrun,verifythatavalidURLhasbeen specified. YoumayalsowanttorefertotheASP.NETandATLServerdebuggingtopic intheonlinedocumentation.Wouldyouliketodisablefutureattemptsto debugASP.NETpagesforthisproject? 原因 如果Microsoft.NETFramework设置或安装没有正确完成,则可能发生此错误。发生此错误时,在MicrosoftInternet信息服务(IIS)中不会正确配置ASP.NET文件扩展名(例如.aspx)的应用程序映射。 若要检查应用程序映射是否正确,请按照下列步骤操作: 1单击开始,指向程序,指向管理工具,然后单击Internet服务管理器。 2展开对应于本地主机(计算机名)的节点,然后展开默认Web站点节点。 3右键单击Web应用程序目录,然后单击属性。 4在目录选项卡上的应用程序设置下,单击配置。 5单击应用程序映射选项卡。 6在应用程序映射选项卡的应用程序映射下,检查.aspx扩展名是否映射到以下动态链接库(DLL): C:\WindowsDirectory\Microsoft.Net\Framework\v1.0.3705\aspnet_isapi.dll 备注:必须用您的系统的正确目录替代此路径中的WindowsDirectory。 7如果未找到应用程序映射条目,请遵循"解决办法"一节中的步骤执行。 解决方案 若要解决此问题,请使用Aspnet_regiis.exe管理实用工具,该实用工具在单个计算机上管理多个版本的ASP.NET的安装和卸载。 若要使用Aspnet_regiis.exe实用工具,请遵循以下步骤: 1单击开始,然后单击运行。 2在打开框中键入cmd,然后单击确定以打开命令提示。 3在命令提示处,键入cd命令以更改为以下目录: C:\WindowsDirectory\Microsoft.Net\Framework\v1.0.3705 4键入aspnet_regiis-i以正确配置所需的应用程序映射。 Errorwhiletryingtorunproject:Unabletostartdebuggingontheweb server.Accessisdenied.Wouldyouliketodisablefutureattemptstodebug ASP.NETpagesforthisproject? 请验证您是计算机上"管理员"组和"调试器用户"组的成员。非管理员不具有调试ASP.NET辅助进程(Aspnet_wp.exe)的正确权限。 九、 一个提交页面,我用RequiredFieldValidator控制TextBox不能为空,在本地的时候一切正常,但是今天上传到服务器上却出现问题,点击提交按钮,什么都没有验证,直接就到达了所符合的页面,后来,朋友让我把aspnet_client上传到服务器文件的根目录下面,则当textbox为空的时候,点击提交按钮的时候,也可以提示为空,但是当textbox不为空的时候,点击提交按钮,则什么反应都没有,就好像是按钮事件丢失一样!! 看看服务器根目录下有aspnet_client目录吗?没有把本地的拷贝上去。 服务器上重新注册:aspnet_regiis-i http://blog.csdn.net/fancyf/archive/ 有人发帖问“aspnet_client必须放在web根目录吗?怎样改变这个路径?” 我一开始猜想这个路径可能是硬编码的。为了证实一下,就打开了Reflector,试图寻找到类似"/aspnet_client/system_web/1_1_4322/"的字符串,却发现这个目录的位置是可以自定义的,但是MSDN中没有公开。相关代码在System.Web.UI.Util.GetScriptLocation(HttpContext)中, 1internalstaticstringGetScriptLocation(HttpContextcontext) 2...{ 3stringtext1=null; 4IDictionarydictionary1=(IDictionary) context.GetConfig("system.web/webControls"); 5if(dictionary1!=null) 6...{ 7text1=(string)dictionary1["clientScriptsLocation"]; 8} 9if(text1==null) 10...{ 11thrownew HttpException(HttpRuntime.FormatResourceString("Missing_clientScriptsLocation")); 12} 13if(text1.IndexOf("{0}")>=0) 14...{ 15stringtext2="system_web"; 16stringtext3=VersionInfo.IsapiVersion.Substring(0, VersionInfo.IsapiVersion.LastIndexOf(".")).Replace(".","_"); 17text1=string.Format(text1,text2,text3); 18} 19returntext1; 20} 然后再machine.config中找到了默认的配置: 当然也可以在web.config中针对单个应用程序进行配置。如果要把aspnet_client目录放在根目录下的myweb中,那么就在web.config文件的标签内加上这么一句:或者直接写就可以了。 十、配置错误 说明:在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误信息:访问被拒绝:“myApp”。 源错误: 行:258 另外还有一个Accessdenied的错误说是不能访问 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\TemporaryASP.NETFiles 下的某个目录。产生这些错误的原因很多,主要的可能包括:Bin目录或者Web.config被更改以及访问文件系统的权限不够。 如果Bin目录或者Web.config被更改,MSDN网站上有文章说是因为MicrosoftIndex Services(IndexingService)服务在运行。详细内容可以访问:PRB:AccessDeniedErrorWhen YouMakeCodeModificationswithIndexServicesRunning。 但是另外还需要注意一些别的问题, 检查Bin目录的文件系统访问权限。一般只要确保Users容器拥有“读取和运行”、“列出文件夹目录”和“读取”的权限就可以了。 如果提示说不能访问C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\TemporaryASP.NET Files\...,可以将TemporaryASP.NETFiles目录的访问权限列表中添加 Everyone,并设置为拥有所有的权限。然后在访问一次此Web应用程序后,将TemporaryASP.NETFiles目录的访问权限列表中将Everyone删除就可以了。 综上所述的方法,主要包括: 禁用或设置IndexingService服务; 检查Bin目录的访问权限; 设置TemporaryASP.NETFiles目录的访问权限。 十一、“/EnterPrise”应用程序中的服务器错误。 从客户端(content="...管理器,右击解决方案添加新建...")中检测到有潜在危险的Request.Form值。 解决办法:web.config中加入 或 前一个作用于所有项目中文件,后者仅仅作用于本页面. 十二、ASP.NET未被授权访问所请求的资源。请考虑授予ASP.NET请求标识访问此资源的权限。 ASP.NET有一个在应用程序没有模拟时使用的基进程标识(通常,在IIS5上为{MACHINE}\ASPNET,在IIS6上为网络服务)。如果应用程序正在通过模拟,则标识将为匿名用户(通常为IUSR_MACHINENAME)或经过身份验证的请求用户。 由于在iis6.0中,默认的应用程序池中的标示用的是NetworkService,所以在进程中是使用Network Service这个账号运行来运行w3wp.exe进程,而当我们在运行VS2003的时候是需要对D:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NETFiles\目录下进行读写操作的,所以看了一下该文件夹,发现没有NetworkService,添加上该账号,同时选上FULL CONTROL,问题解决,但是至于为什么会产生这个问题我不大清楚,因为在安装WINDOWS2003的时候,Network Service账号是存在于TemporaryASP.NETFiles该文件夹安全列表中的。 顺便提一下,在IIS6.0中的默认应用程序池-->属性-->标示中把NetService改成LocalSystem该问题也可以解决。 对路径“D:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary asp.netFiles\webapplication180d7be\b46d 说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息:System.UnauthorizedAccessException: 对路径“D:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporaryasp.net Files\webapplication180d7be\b46d asp.net未被授权访问所请求的资源。请考虑授予asp.net请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在IIS5上为{MACHINE}\ASPNET,在IIS6 上为网络服务)。如果应用程序正在通过模拟,则标识将为匿名用户(通常为IUSR_MACHINENAME)或经过身份验证的请求用户。 若要授予asp.net对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示asp.net帐户,选中所需访问权限对应的框。 二、调试权限不够 Try: 根据设计,ASP.NET要求对根Web站点上或任何虚拟目录上的ASPNET帐户(Aspnet_wp.exe 进程帐户)具有读取、执行和列出访问权限。这是必需的,以便ASP.NET可以访问内容文件并可以监视文件更改。 解决方案 若要为根Web站点上或任何虚拟目录上的ASPNET帐户添加读取、执行和列出访问权限,请执行以下步骤: 在Windows资源管理器中,浏览到包含根Web站点(默认情况下是C:\Inetpub\Wwwroot)或虚拟目录的文件夹。 右键单击该文件夹,然后单击属性。 在安全性选项卡上,单击添加。 键入计算机名\ASPNET(例如,在名为Webdev的计算机上,键入Webdev\ASPNET),然后单击确定。 允许以下ASPNET帐户权限: 读取并执行 列出文件夹内容 读取 单击确定以关闭属性对话框并保存所做更改。 备注:如果Everyone组或用户组已具有对根Web站点或虚拟目录的读取访问权限,则无需执行这些步骤。 ------- 添加IUSR_YouComputerName和ASPNET这两个用户对 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\TemporaryASP.NET Files\webapplication1dd84b00\b065eec7目录的访问权限,设置为完全访问, -------- 将asp.net用户(具体是什么记不太清楚了:<可以到“安全性--用户/用户组”中查看)对目录 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\TemporaryASP.NETFiles 的权限改为可写或更高即可。 三、System.Reflection.TargetInvocationException:调用的目标发生了异常。---> System.UnauthorizedAccessException:拒绝访问。---内部异常堆栈跟踪的结尾---at System.RuntimeType.InvokeDispMethod(Stringname,BindingFlagsinvokeAttr, Objecttarget,Object[]args,Boolean[]byrefModifiers,Int32culture, String[]namedParameters)atSystem.RuntimeType.InvokeMember(Stringname, BindingFlagsinvokeAttr,Binderbinder,Objecttarget,Object[]args, ParameterModifier[]modifiers,CultureInfoculture,String[] namedParameters)atSystem.Type.InvokeMember(Stringname,BindingFlags invokeAttr,Binderbinder,Objecttarget,Object[]args)at System.DirectoryServices.DirectoryEntry.Invoke(StringmethodName,Object[] args)ataspnetc.pubFunction.IISManager.Create(VirtualDirectorynewdir)in f:\ziliao1\aspc\pubfunction\iismanager.cs:line132 如果是在asp.net下使用的话,要记得在中添加 否则就会出现“异常详细信息:System.UnauthorizedAccessException:拒绝访问“。 四、iis访问站点时出现输入用户名和密码 1.iis->站点->属性->目录安全性->身份验证和访问控制->启用匿名访问 2.不知你有没有添加这"IUSR_yourname"INTERNET来宾账户!如没有添加就应该是这个问题所引起. (在"默认网站---属性-----目录安全性-----编辑------浏览-----高级-----立即查找"即可找到本账户,双击添加即可) 3.把你网站文件所在的目录的,全权改成everyone再试一下先.楼上们所说的一般情况下默认是不会错的. 4把iis目录所在的文件夹权限加iuser_机器名 五、"VisualStudio.NET已检测到指定的Web服务器运行的不是ASP.NET1.1版..."的解决办法 步骤一尝试如下: 1.当然先确定一下,是否真的装了1.1的版本,查看路径C:\WINNT\Microsoft.NET\Framework\v1.1.4322 2.也是很多人都知道,重新安装aspnet_regiis,怎么安装,就不多说了,网上很多! 3.重启IIS,重新启动ASP.NET服务程序 4.如果你的Web服务器使用了固定IP:确定你的"Internet信息服务"中使用的是"默认web站点"并且其属性中的IP地址为"(全部未分配)",而不是你己指定的ip地址。可以修改"默认web站点"的名字,但不要删除,一旦删除,只要在新建的时候,名称严格为"默认web站点"也可以恢复 5.如果你的IE使用了代理的话,把BypassProxyServerforlocaladresses勾上 6.如果你本身已经有个web站点,请把它卸载掉,不用重新安装vs.net,只要重新安装下iis也可以。 7.如果还是不行,那可真没什么办法了,那就重装IIS,FRAMWORK,.NET,操作系统吧 最后说一个安全问题,尽量不要把IIS指向默认路径C:\Inetpub\wwwroot 这个路径很容易受攻击,最好重新指向一个新的路径,然后把wwwroot文件夹删除掉,需要用户上传文件的,千万要阻止上传".HTA"文件,做好访问网站的权限,屏蔽执行HTA文件,做好数据库备份工作! 又是工作中的一点经验,供大家参考,少走弯路! 步骤二 1.你的Web服务器使用了固定IP:确定你的"Internet信息服务"中使用的是"默认web站点"并且其属性中的IP地址为"(全部未分配)",而不是你 己指定的ip地址。然后在回到VS.NET中重试,或许可以解决。 2.以上方法不能解决问题时,考虑MSDN中的解决办法,如下: VisualStudio.NET无法确定在Web服务器计算机上运行的是否为ASP.NET1.1 版。该错误可能在几种不同情况下发生。请检查是否属于以下情况: a,确保.NETFramework1.1版安装在Web服务器计算机上。有关详细信息,请参见VisualStudio.NET软件要求。 b,如果ASP.NET已安装在Web服务器计算机上,但仍然遇到此错误,则可能是配置问题。为了纠正有问题的安装或配置,可以使用名为 aspnet_regiis的ASP.NET实用工具。在类似如下所示的路径中可以找到此命令行实用工具: C:\WINDOWS\Microsoft.NET\Framework\v1.1.nnnn\ 其中nnnn表示四位内部版本号。在最高版本号下查找。使用/i开关运行该实用工具: aspnet_regiis/i 提示您可以从命令的正确目录中直接打开该命令窗口。从Windows的"开始"菜单,指向"程序"、"VisualStudio.NET2003"、"VisualStudio.NET工具",然后选择"VisualStudio.NET命令提示"。在窗口打开后,键入aspnet_regiis/i。 不需要吧,在程序的vs.net的vs.nettool的vs.netcommandprompt下 输入: aspnet_regiis-r 问题就可以解决了。 仔细的看看aspnet_regiis的参数的意义 查询参数aspnet_regiis/all 会列出所有的参数 步骤三 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服务器扩展。 安装VisualStudio.NET时,将创建一个“VSDevelopers”(VS开发人员)用户组,并授予该用户组对 inetpub\wwwroot文件夹的读/写权限。想使用计算机上的文件共享创建Web项目的任何用户都需要添加到“VS Developers”(VS开发人员)用户组中。新建的“VSDevelopers”(VS开发人员)组没有任何成员,所以,即使是安装 VisualStudio的用户,也必须手动将自己添加到这个组中。 如果不希望将VisualStudio安装到服务器上,可以通过VisualStudio安装程序仅安装服务器组件,以创建“VS Developers”(VS开发人员)组。 (3)win2003下: 在VS.NET中,为了测试URL和UNC,VS.NET会在目录下面生成一个.tmp文件,然后通过HTTP对该文件发出请求。但是在IIS 6中,出于安全考虑,tmp文件没有注册,默认情况下,会被block然后产生HTTP404错误。 解决这个问题,请您参阅下面的方法: 1。打开IIS管理器。 2。右键点击"DefaultWebSite"并选择Properties. 3。点击"HttpHeader". 4。点击"MIMETypes". 5。点击“New”。 6。在Extension中,输入".tmp".(不需要引号) 7。在MIMEType中,输入"Temp".(不需要引号) 还有一种解决方法,您可以使用下面的命令行: %systemdrive%\inetpub\adminscripts\adsutil.vbssetw3svc/1/root/MimeMap .tmp,temp 在创建WebApplication时,VS.Net需要在创建路径下创建后缀名为.tmp的临时文件。 当VS.Net创建好项目之后,就会以HTTP的方式向Web文件夹寻求项目文件,同时也寻求临时文件。由于windows2003在某些安装步骤下的IIS没有把.tmp文件设置为MIME类型,所以IIS向VS.Net返回了未知文件类型的错误,即找不到文件。所以VS.Net认为你的IIS路径设置不对。 六、试图运行项目时出错:无法在WEB服务器上启动调试。您没有调试该服务器的权限。 验证您是服务器上“DebuggerUsers”组的成员。 1.作为Administrator登录。 2.运行Administratortools中的Computermanagement。 3.选择Localusersandgroups\groups节点。 4.双击右边窗格中的DebuggerUsers组。 5.单击Debuggerusersproperties对话框中的Add按钮。 6.键入用户帐户并单击OK。 |
|
来自: Frank_Chia > 《.NET》