小编pet*_*ter的帖子

远程主机强制关闭现有连接

我正在使用一个商业应用程序,它正在抛出带有消息的SocketException,

远程主机强制关闭现有连接

客户端和服务器之间的套接字连接会发生这种情况 连接仍然存在,并且正在传输大量数据,但它随后就无法断开连接.

有没有人见过这个?原因是什么?我可以猜到一些原因,但是有没有办法在这段代码中添加更多内容以找出原因可能是什么?

欢迎任何意见/想法.

... 最新的 ...

我有一些.NET跟踪记录,

System.Net.Sockets Verbose: 0 : [8188] Socket#30180123::Send() DateTime=2010-04-07T20:49:48.6317500Z

System.Net.Sockets Error: 0 : [8188] Exception in the Socket#30180123::Send - An existing connection was forcibly closed by the remote host DateTime=2010-04-07T20:49:48.6317500Z 

System.Net.Sockets Verbose: 0 : [8188] Exiting Socket#30180123::Send() -> 0#0
Run Code Online (Sandbox Code Playgroud)

根据日志记录的其他部分,我看到它说'0#0'表示正在发送一个0字节长度的数据包.但这究竟意味着什么?

发生两种可能性之一,我不确定,

1)连接正在关闭,但数据随后被写入套接字,从而产生上述异常.0#0只表示没有发送任何内容,因为套接字已经关闭.

2)连接仍然是打开的,并且正在发送一个零字节的数据包(即代码有一个错误),0#0表示正在尝试发送一个零字节的数据包.

你怎么看?我想这可能是不确定的,但也许其他人已经看到过这种事情了?

.net c# sockets networking

130
推荐指数
6
解决办法
36万
查看次数

使用PropertyInfo查找属性类型

我想动态解析一个对象树来做一些自定义验证.验证并不重要,但我想更好地理解PropertyInfo类.

我会做这样的事情,

public bool ValidateData(object data)
{
    foreach (PropertyInfo propertyInfo in data.GetType().GetProperties())
    {
        if (the property is a string)
        {
            string value = propertyInfo.GetValue(data, null);

            if value is not OK
            {
                return false;
            }
        }
    }            

    return true;
}
Run Code Online (Sandbox Code Playgroud)

我现在关心的唯一部分是'如果属性是字符串'.如何从PropertyInfo对象中找出它的类型.

我将不得不处理基本的东西,如字符串,整数,双打.但我也必须处理对象,如果是这样,我将需要在对象树中进一步向下遍历这些对象以验证其中的基本数据,它们也将具有字符串等.

谢谢.

.net c# reflection

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

如何在事件日志中查找应用程序池重新循环

我已经在IIS 7.5中配置了一个应用程序池,以便在内存使用率超过某个级别时进行回收.我还将其配置为记录此信息.

我应该在事件日志中找到这个?

我已经尝试过滤基于所有IIS项目的源,例如'IIS-W3SVC-WP','IIS-IISManager',以及所有其余的,但没有.

我可以看到它正在添加我启用的"IIS-Configuration"日志中的项目.但仍然没有.

iis iis-7.5

73
推荐指数
4
解决办法
10万
查看次数

将数据插入SQL Server会锁定整个表吗?

我正在使用Entity Framework,我正在将记录插入到包含blob字段的数据库中.blob字段最多可以包含5 MB的数据.

将记录插入此表时,是否锁定整个表?

因此,如果您正在查询表中的任何数据,它是否会阻塞,直到插入完成(我意识到有解决方法,但我默认说话)?

它会导致死锁需要多长时间?那个时间是否取决于服务器上的负载量,例如,如果没有太多负载,是否需要更长时间才能导致死锁?

有没有办法监控并查看在任何特定时间锁定的内容?

如果每个线程都在对单个表进行查询,那么是否存在可能发生阻塞的情况?因此,如果您的查询具有连接并且作用于多个表,则不会发生死锁吗?

这考虑到我的大多数代码只是一堆select语句,而不是长时间运行的事务或类似的事情.

sql-server entity-framework

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

用于PhoneGap数据库存储的内容

我正在使用PhoneGap编写应用程序,并且发现很难弄清楚如何将数据存储在数据库中.我只想保持开放的态度,因为我将向公司推荐技术选项.

用于存储的PhoneGap API在这里,

http://docs.phonegap.com/en/1.3.0/phonegap_storage_storage.md.html#Storage

它基于这个HTML5规范,

http://www.w3.org/TR/webdatabase/

对我来说问题是不再维护此规范,并且该标准已被弃用.

另一个问题是我使用Web数据库实现了数据库,并且版本控制无法正常工作.

什么是PhoneGaps对此的立场,并将PhoneGap看看其他技术,如索引数据库API,

http://www.w3.org/TR/IndexedDB/#database-concept

我现在正在localStorage中存储JSON数据,这工作得很好,但我想知道我的数据库是否会变得太大而且可能不是最佳选择.

html5 cordova

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

HttpContext抛出HttpException

我写了一个自定义的http处理程序.我通过编写实现IHttphandler的类来完成此操作.

在那个班级里面,我有这样的代码,

context.Response.Clear();
context.Response.ClearHeaders();
context.Response.AddHeader("Content-Disposition", "attachment;filename=" + attachmentFileName);
context.Response.AddHeader("Content-Length", new FileInfo(downloadFile).Length.ToString());
context.Response.ContentType = GetMimeType(attachmentFileName);
context.Response.TransmitFile(downloadFile);
context.Response.Flush();
context.Response.Close();
Run Code Online (Sandbox Code Playgroud)

偶尔我会收到这样的错误,

Exception HttpException The remote host closed the connection The error code is 0x800703E3
Run Code Online (Sandbox Code Playgroud)

或这个,

Exception HttpException The remote host closed the connection The error code is 0x80070040
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,堆栈跟踪都是这样的,

at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()
at System.Web.HttpResponse.Flush(Boolean finalFlush)
at System.Web.HttpResponse.Flush()
Run Code Online (Sandbox Code Playgroud)

这种情况发生在生产中,如果我回顾过去几天错误发生了23次,总共上述代码被称为497次.

我怀疑这个失败与用户点击链接不止一次启动上述代码(这将给他们多个下载对话框)有关,然后他们取消了其中一些.话虽如此,如果它是这样的,我会期望连接在两端优雅地关闭.

如何证明此错误的确切原因?我试图启用这样的.NET跟踪为什么不跟踪侦听器记录自定义处理程序流量?但无法让它发挥作用.

我发现虽然我已启用IIS跟踪来记录失败的请求.失败再次发生,并且该日志中没有任何内容.

我可以启用任何其他跟踪吗?

接下来我尝试的是这个,

if (context.Response.IsClientConnected)
{
    context.Response.Flush();
    context.Response.Close();
}
else
{
    LogMessage("Client has disconnected before flush was …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net iis-7 httpexception

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

为什么缺乏方法的凝聚力(LCOM)包括Getters和Setter

我正在查看此处显示的LCOM指标,

http://www.ndepend.com/Metrics.aspx

所以我们说了几件事,

1) A class is utterly cohesive if all its methods use all its instance fields
2) Both static and instance methods are counted, it includes also constructors, properties getters/setters, events add/remove methods
Run Code Online (Sandbox Code Playgroud)

如果我看一下这样的课,

public class Assessment
{
    public int StartMetres { get; set; }
    public int EndMetres { get; set; }
    public decimal? NumericResponse { get; set; }
    public string FreeResponse { get; set; }
    public string Responsetype { get; set; }
    public string ItemResponseDescription { get; …
Run Code Online (Sandbox Code Playgroud)

.net c# ndepend lcom

20
推荐指数
1
解决办法
7584
查看次数

如何使用反射处理数组

我正在写一些验证码.代码将传递到Web服务中的数据并决定它是否可以执行操作,或者向调用者返回他们错过了某些字段等的消息.

我有它主要工作除了数组.我使用[RequiredField]属性标记属性以表示所需的字段.所以,如果这是我的一些数据,

public enum EnumTest
{
    Value1,
    Value2
}

[DataContract]
public class DummyWebserviceData
{
    [DataMember]
    [RequiredField]
    public EnumTest[] EnumTest{ get; set; }

    [DataMember]
    [RequiredField]
    public DummyWebserviceData2[] ArrayOfData { get; set; }
}

[DataContract]
public class DummyWebserviceData2
{
    [DataMember]
    [RequiredField]
    public string FirstName { get; set;}

    [DataMember]
    [RequiredField]
    public string LastName { get; set;}

    [DataMember]
    public string Description { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

那我该怎么办?我有日期验证和字符串工作.它使用递归来获取数据所需的任何深度级别.

但是......那么那两个阵列怎么样呢.第一个是枚举数组.我想检查一下这个数组不是空的情况.

第二个是DummyWebserviceData2值的数组.我需要拉出每个值并单独查看它.

为了简化我编写的代码,它看起来像这样,

foreach (PropertyInfo propertyInfo in data.GetType().GetProperties())
{
    if (propertyInfo.PropertyType.IsArray)
    {
        // this craps out

        object[] array …
Run Code Online (Sandbox Code Playgroud)

c# reflection

18
推荐指数
3
解决办法
3万
查看次数

如何使用WCF服务临时停止证书错误

我正在测试我创建的WCF Web服务的早期版本.在客户端,当我使用VS来"添加服务引用"时,一切正常.

但是当我尝试使用该服务时,我得到错误,

Could not establish trust relationship for the SSL/TLS secure
channel with authority **
Run Code Online (Sandbox Code Playgroud)

星号代表服务器的IP地址.

无论如何在服务器上有一个安全证书,但它只是为了测试自己生成的,所以我暂时不担心证书错误.

在客户端,已经为我生成了app.config,

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="BindingName" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                    allowCookies="false">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Transport">
                        <transport clientCredentialType="Windows" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="Windows" negotiateServiceCredential="true" />
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="***************"
                binding="wsHttpBinding" bindingConfiguration="BindingName"
                contract="***************" name="BindingName">
                <identity>
                    <servicePrincipalName value="***************" /> …
Run Code Online (Sandbox Code Playgroud)

.net c# wcf

15
推荐指数
3
解决办法
3万
查看次数

没有IoC或依赖注入的模拟

有没有办法在单元测试中使用模拟或假货而无需使用依赖注入或反转或控制?

我发现这种语法可以与TypeMock Isolator(http://learn.typemock.com/)一起使用.虽然它是一个商业产品,所以我希望其他框架(例如RhinoMocks)会在某个阶段引入这样的语法.

/// Can mock objects WITHOUT DEPENDENCY INJECTION.

var hand = Isolate.Fake.Instance<Hand>();
var mouth = Isolate.Fake.Instance<Mouth>();
Isolate.Swap.NextInstance<Hand>().With(hand);
Isolate.Swap.NextInstance<Mouth>().With(mouth);
...
//notice we're not passing the mocked objects in.
var brain = new Brain();
brain.TouchIron(iron);
...
Run Code Online (Sandbox Code Playgroud)

这对我这种语法非常有吸引力,这一切都是自动发生的.我们可以在那里创建一个没有传递必需依赖项的大脑,并且模拟框架将自动替换依赖项用于模拟对象.任何身体在其他地方看到过这种类型的东西?

大脑类构造函数现在使用上面的语法,

public Brain()
{
    _hand = new Hand();
    _mouth = new Mouth();
}
Run Code Online (Sandbox Code Playgroud)

依赖注入示例看起来像这样,

public Brain(IHand hand, IMouth mouth)
{
    _hand = hand;
    _mouth = mouth;
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# unit-testing dependency-injection inversion-of-control

12
推荐指数
1
解决办法
4809
查看次数