小编Bob*_* Mc的帖子

连续十次请求后的HttpWebRequest超时

我正在为特定网站编写网络抓取工具.该应用程序是一个使用多个线程的VB.Net Windows窗体应用程序- 每个Web请求都是连续的.但是,在十次成功的页面检索之后,每个连续的请求都会超时.

我已经回顾了已经在SO上发布的类似问题,并在我的GetPage例程中实现了推荐的技术,如下所示:

Public Function GetPage(ByVal url As String) As String
    Dim result As String = String.Empty

    Dim uri As New Uri(url)
    Dim sp As ServicePoint = ServicePointManager.FindServicePoint(uri)
    sp.ConnectionLimit = 100

    Dim request As HttpWebRequest = WebRequest.Create(uri)
    request.KeepAlive = False
    request.Timeout = 15000

    Try
        Using response As HttpWebResponse = DirectCast(request.GetResponse, HttpWebResponse)
            Using dataStream As Stream = response.GetResponseStream()
                Using reader As New StreamReader(dataStream)
                    If response.StatusCode <> HttpStatusCode.OK Then
                        Throw New Exception("Got response status code: " + response.StatusCode)
                    End …
Run Code Online (Sandbox Code Playgroud)

.net vb.net httpwebrequest

6
推荐指数
1
解决办法
7406
查看次数

Linq查询返回不正确的结果集

我有一个非常复杂的Linq to SQL查询,它从Microsoft SQL Server数据库返回结果集.使用类似于以下语法创建查询:

Dim db as MyDataContext = MyGetDataContextHelper()
Dim qry = From rslt in db.MyView Select ColumnList

If userParam1 IsNot Nothing Then
    qry = qry.Where(lambda for the filter)
End If

etc....

Return qry.ToList()
Run Code Online (Sandbox Code Playgroud)

查询有几个用户指定的过滤器,包括进行地理半径搜索的过滤器.

这是问题所在.我在最后的"ToList"调用中设置了一个中断.当中断命中时,我使用Linq to SQL Debug Visualizer查看生成的SQL语句.我将该复杂的SQL语句复制到SQL Server Management Studio查询窗口中,并对我的数据库执行它以获得我想要的结果集.因此生成的SQL似乎产生了所需的结果.但是,当我执行查询对象的"ToList"方法时,返回的列表具有较少的行和一些不同的行.我也尝试使用DataContext日志属性写入文件,结果相同.该查询在SQL Management Studio中生成正确的结果集,但ToList方法的结果不正确.

怎么可能?如果生成的SQL只是通过与SQL Server的连接传递,那么它不应该生成我在SQL Server Management Studio中看到的结果集吗?我假设我误解了Linq to SQL机制,即它不仅仅是SQL Server的一个直通.那是对的吗?

编辑: 根据下面的请求,这是由Linq生成的SQL的一个非常简洁的版本,为简洁起见,删除了大多数结果列.它在SQL Management Studio中生成正确的结果,但返回到我的应用程序的结果是不同的.

SELECT [t3].[Id]
FROM (
    SELECT DISTINCT [t1].[Id]
    FROM (
        SELECT [t0].[Id], [t0].[ItemDate]
        FROM [dbo].[MySearchView] AS [t0]
        ) AS [t1]
    WHERE (EXISTS( …
Run Code Online (Sandbox Code Playgroud)

.net linq sql-server linq-to-sql

6
推荐指数
1
解决办法
1736
查看次数

密码盐:其他最佳实践

像大多数程序员一样,我不是密码学方面的专家,但我理解基础知识.然而,正如Jeff的博客文章所述,一点点知识可能是一件危险的事情.考虑到这一点,我理解盐值的目的但我需要一些帮助来理解如何使用盐值.

我已经阅读过关于这个主题的其他帖子,最好使用随机盐值来加密每个密码.如果是这种情况,当我尝试对用户进行身份验证时,如何重现该随机盐值?在这种情况下,我会加密用户提供的明文密码,对其进行加密,并将其与存储在数据库中的密码进行比较.在创建密码时,是否将随机盐值与加密密码一起存储在用户记录中?如果黑客拥有完整的用户记录,这会使盐值无用吗?

cryptography salt

3
推荐指数
1
解决办法
3023
查看次数