asp.net 在调试模式下,socket服务不会停止,但部署到IIS后,过段时间socket服务会停止,而且没有异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 在调试模式下,socket服务不会停止,但部署到IIS后,过段时间socket服务会停止,而且没有异常相关的知识,希望对你有一定的参考价值。

参考技术A 应用程序连接池会在没有数据处理的时候,自动回收。所以在IIS上开一个常开SOKET是不靠谱的做法。如果必须要,应该包含重启动机制,最好是页面触发。不然是没有再触发的可能的,除非包含定时重启功能。 参考技术B IIS一段时间会自动回收工作进程的,
检测然后重连.追问

IIS 默认是1740分钟,可是我这才几个小时就停了,IIS自动回收工作进程,会把Socket服务进程给关了吗?

追答

还有其他原因会导致回收工作进程回收,
Socket服务应为有连接,一回收就断了.

在客户端加个自动重连,断开了就重连接.
然后仔细检查下代码,看看是不是有东西没释放.耗尽了资源.

参考技术C socket是在哪开的?在global文件里开比较靠谱,其他地方开都有被奇怪规则回收的可能。追问

就是在global文件里开的

追答

那应该就是代码有问题,什么东西没清理干净,导致应用池被回收了

在发布模式下调试符号

【中文标题】在发布模式下调试符号【英文标题】:Debug symbols in release mode 【发布时间】:2009-11-12 00:44:15 【问题描述】:

在 ASP.NET 2.0 网站上,我记录了未处理异常的详细信息。我想记录源文件名和行号,但是当发生异常时我没有在堆栈跟踪中得到这个。原因是我在 web.config 编译设置中有 debug="false" (它是一个生产站点),因此服务器上没有生成 PDB 文件。有没有办法让 ASP.NET 在发布模式下生成调试符号文件?我不想预编译网站。

【问题讨论】:

我不是 100% 确定,但我怀疑这是否可能。 【参考方案1】:

好的,我找到了答案。您可以设置 debug="false" 以获取优化,然后在 system.codedom 编译器设置中设置 compilerOptions="/debug:pdbonly" 以获取符号。以下是相关的 web.config 摘录:

<system.web>
  ....
  <compilation debug="false" defaultLanguage="c#">
  ...
  </compilation>
</system.web>
<system.codedom>
  <compilers>
    <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
        type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
        compilerOptions="/debug:pdbonly">
      <providerOption name="CompilerVersion" value="v3.5"/>
      <providerOption name="WarnAsError" value="false"/>
    </compiler>
    ...
  </compilers>
</system.codedom>

【讨论】:

仅供参考,对于我的 ASP.NET 4.0 网站项目,在浏览 CompilerInfo 数组后(使用 CompilerInfo[] allCompilerInfo = CodeDomProvider.GetAllCompilerInfo(); 获取它),版本设置为“版本=4.0.0.0" 和 。其他一切都是一样的。故事的寓意是您的里程可能会有所不同,请检查您项目的实际设置。【参考方案2】:

除非我遗漏了一些东西,否则调试和发布版本之间的区别在于优化。您应该能够使用 pdb 创建一个正常的调试二进制文件,并确保启用项目设置中的所有优化设置。 Afaik 除非出现异常,否则不会加载 pdb 文件等...

【讨论】:

这是一个 ASP.NET 2.0 网站 - 我不是在构建二进制文件。所有编译都由 ASP.NET 即时完成并由 web.config 设置控制。看来我可以有 debug="false" (优化但没有符号)或 debug="true" (符号但没有优化)。

以上是关于asp.net 在调试模式下,socket服务不会停止,但部署到IIS后,过段时间socket服务会停止,而且没有异常的主要内容,如果未能解决你的问题,请参考以下文章

在发布模式下调试符号

具有捆绑和缩小功能的 ASP.NET MVC 4 应用程序,为啥在调试模式下启用缩小?

字体在发布模式下未正确呈现,但在 ASP NET Webforms 中的调试模式下工作

在生产模式下删除 ASP.NET Core 2.0 中的控制台和调试记录器

如何在 ASP.NET MVC 中集成 AngularJS

ASP.NET:无法将 Web 应用程序切换到调试模式