ASP.NET使用中一些报错问题

一、前端asp.net在远程部署到IIS时报错:Web 部署任务失败,在远程计算机上处理请求时出错

服务器在处理请求时遇到问题。请与服务器管理员联系以了解详细信息((2017/6/16 16:22:41)。

原因:远程部署的文件夹的权限没有设置

需要在文件夹 属性-》安全,添加local service权限

二、用户代码未处理InsufficientExecutionStackException

   “System.InsufficientExecutionStackException”类型的异常在 System.Web.dll 中发生,但未在用户代码中进行处理

  其他信息: 堆栈空间不足,无法继续安全地执行程序。调用堆栈上的函数过多或堆栈上的函数使用过多的堆栈空间时,会发生这种情况。

原因:Html.RenderAction("PartailViewTable");   /*加载部分视图*/

改为

        Html.RenderPartial("PartailViewTable");  

Html.RenderAction是通过Controller中的Action来调用MVC用户控件

在MVC 2.0中,新增加了Html.RenderAction();这个方法与RenderPartial有点不一样,他是直接重新执行一次Controller → Model → View的顺序,然后把产生的页面带回到原来的View中再回传。

        

两者的不同点

  1. RenderPatial的数据来自于调用的View,而RenderAction来自自己。
  2. RenderAction会发起一个新的Request,而RenderPatial不会。

对于RenderAction会发起一个新的Request,感觉对调用页面的流程有点破坏。

一个View在显示的时候,自己又发起一个 Request去获取数据来显示,显然有点破坏了作为一个View的原则:A View should only know how to render, but not what to render!

三、上下文不存在名称“scripts

 @Scripts.Render("~/Scripts/jquery-1.10.2.min.js")

 

是因为缺少命名空间

@using System.Web.Optimization

@Scripts.Render("~/Scripts/jquery-1.10.2.min.js")

当然为了通用性,最佳的实践是在Views文件夹的web.config中添加System.Web.Optimization名称空间的引用,如下所示:

<namespaces>
  <add namespace="System.Web.Mvc" />
  <add namespace="System.Web.Mvc.Ajax" />
  <add namespace="System.Web.Mvc.Html" />
  <add namespace="System.Web.Routing" />
  <add namespace="Bootstrap.Web" />
  <add namespace="System.Web.Optimization" />
</namespaces>

四、w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法

参考:w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法

五、MVC的cshtml中空引用

报错我们一般会去看错误日志,都会显示错误在哪一行。

而在cshtml 中行数并不准确,这时就需要看下 报错的后面一些行是否有对象为null。

六、Response.End()报ThreadAbortException: Thread was being aborted

在程序中做了导出订单的功能,

   resp.Write("</table>");
   resp.Flush();
   resp.End();
        }
   catch (ThreadAbortException ex) //主要是这里
    {
                Helper.WriteErrorLog( "Offline.Site", "订单导出Abort异常",ex.Message);
                throw;
            }
            catch (Exception ex)
            {
                Helper.WriteErrorLog(
                           "Offline.Site",
                           "订单导出异常",
                           ex.Message
                           );
            }
View Code

原来查到Response.End(); 就是停止页的执行。
End()只是简单的终止当前线程,而其他线程继续运行不受影响。如果不捕获ThreadAbortException,就不会抛出异常

于是改为 ThreadAbortException内不做任何处理。或者不捕获 ThreadAbortException。

更多参考官网:HttpResponse.End Method

原文地址:https://www.cnblogs.com/peterYong/p/10679275.html