小编ALE*_*sos的帖子

应用程序崩溃".NET运行时中的内部错误"

我们有一个针对.NET 4.0编写的应用程序,它在周末崩溃,将以下消息放入事件日志中:

应用程序:PnrRetrieverService.exe Framework版本:v4.0.30319
描述:由于.NET运行时在IP 791F9AAA(79140000)处出现内部错误而导致进程终止,退出代码为80131506.

这是在Windows Server 2003 R2标准版框中.谷歌搜索这个错误没有发现任何相关的.例如,这不是在VS Studio中发生的,而是在生产框中发生; 当服务最终重新启动时,它没有遇到任何进一步的问题.

如何诊断.NET运行时中的错误?

.net runtime-error executionengineexception

106
推荐指数
6
解决办法
11万
查看次数

多线程Windows服务中的多个同时SQL连接超时

我有一个多线程Windows服务,我用VS 2010(.NET 4.0)开发,可以有几个到几十个线程,每个线程通过Internet从慢速服务器检索数据,然后使用本地数据库记录这个数据(因此进程受Internet限制,而不是LAN或CPU绑定).

有一些规律性,我从几个线程同时得到以下错误的洪水/乱舞/爆发:

System.Data.SqlClient.SqlException(0x80131904):超时已过期.操作完成之前经过的超时时间或服务器没有响应.

此错误的调​​用堆栈通常是:

在System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)

在System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)

在System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)

在System.Data.SqlClient.SqlConnection.Open()

我没有在连接字符串中指定连接超时,并且此数据库中还有其他应用程序和进程.有没有人遇到过这种行为,如果有的话,采取了哪些措施来防止它?

我的数据访问层中最常用的方法如下所示,我所有其他DAL方法都遵循相同的方法:

using (SqlConnection con = new SqlConnection(GetConnectionString()))
using (SqlCommand cmd = new SqlCommand("AddGdsMonitorLogEntry", con))
{
    cmd.CommandType = CommandType.StoredProcedure;

    /* setting cmd.Parameters [snipped] */

    // We have been getting some timeouts writing to the log; wait a little longer than the default.
    cmd.CommandTimeout *= 4;

    con.Open();

    cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

编辑

鉴于在镜像环境中发生这种情况的评论,我确实应该提到有问题的数据库是镜像的.它在SSMS中标记为"Principal,Synchronized","高安全性,无自动故障转移(同步)"模式.

编辑5/26/11

我在SQL Server日志中看不到任何问题.(我无法访问该服务器上的Windows事件查看器,但我已经要求有人找我.)

sql-server multithreading connection-timeout

25
推荐指数
2
解决办法
2万
查看次数

如果SQL Server USER_NAME()是一个sysname,为什么它返回NVARCHAR(256)?

我正在使用一个列,我希望USER_NAME()在SQL Server 2008 R2中保存该函数的值.在BOL中,该函数被记录为具有返回类型NVARCHAR(256).

但是,在其中一个示例中,他们这样做:

SELECT name FROM sysusers WHERE name = USER_NAME(1)
Run Code Online (Sandbox Code Playgroud)

并且sysusers.name列有类型sysname,这是(据我所知)有效的NVARCHAR(128) NOT NULL.这种不一致性在文档中进一步巩固CURRENT_USER,其中说"此函数等效于USER_NAME()",但表明其类型是sysname(当然,它继续有一个示例,它使用CURRENT_USER作为VARCHAR(30)列的默认值... )

是什么赋予了?BOL的类型是错误的USER_NAME()吗?我使用它是否安全NVARCHAR(128)

sql-server

4
推荐指数
1
解决办法
838
查看次数

WCF在HTTPS上生成"提供的URI方案'https'无效;预期'http'."

我一直在google搜索我可能找到的任何地方(包括在这里的Stackoverflow),以找出我试图将WCF服务部署到Windows 7 x64上的IIS 7.5上的错误,该服务仅通过基本HTTP身份验证的SSL运行.我在IIS中有一个站点,它具有绑定到端口50443的HTTPS以及自签名证书.(我不能使用标准端口443,因为我们计划在已经运行Tomcat的服务器上将其部署到IIS,该服务器正在监听80和443.)

这是web.config:

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="SSLBinding">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Basic"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="HelloWorldWcf.HelloWorldWcfService">
        <endpoint name="HelloWorldWcf.HelloWorldWcfService" 
                  address="https://mylaptop:50443/HelloWorld/Service1.svc" 
                  binding="basicHttpBinding" 
                  bindingConfiguration="SSLBinding" 
                  contract="HelloWorldWcf.IHelloWorldWcfService"/>
        <endpoint address="https://mylaptop:50443/HelloWorld/Service1.svc/mex" 
                  binding="mexHttpsBinding" 
                  contract="IMetadataExchange"/>
      </service>
    </services>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

如果我浏览到服务端点地址并手动输入基本身份验证凭据,则会在浏览器中显示以下异常错误消息:

提供的URI方案"https"无效; 预计'http'.
参数名称:context.ListenUriBaseAddress

这是我尝试针对类似服务运行WCF客户端时出现的相同错误,除了它以"参数名称:via"结尾(因为调用堆栈中显示的方法的参数名称为"System.ServiceModel"). Channels.TransportChannelFactory`1.ValidateScheme(URI via)",实际上是"via").

我已经调整了服务器和客户端配置文件很多次我失去了轨道,但上面的web.config文件是我迄今为止最好的猜测 - 它甚至不能在浏览器中运行,更不用说WCF客户端了.

通过HTTPS进行基本HTTP身份验证,在非标准SSL端口上访问IIS 7.5中托管的WCF服务需要做什么?救命!(& 谢谢!)

ssl https wcf iis-7.5

2
推荐指数
1
解决办法
2万
查看次数