我正在为特定网站编写网络抓取工具.该应用程序是一个不使用多个线程的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) 我有一个非常复杂的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) 像大多数程序员一样,我不是密码学方面的专家,但我理解基础知识.然而,正如Jeff的博客文章所述,一点点知识可能是一件危险的事情.考虑到这一点,我理解盐值的目的但我需要一些帮助来理解如何使用盐值.
我已经阅读过关于这个主题的其他帖子,最好使用随机盐值来加密每个密码.如果是这种情况,当我尝试对用户进行身份验证时,如何重现该随机盐值?在这种情况下,我会加密用户提供的明文密码,对其进行加密,并将其与存储在数据库中的密码进行比较.在创建密码时,是否将随机盐值与加密密码一起存储在用户记录中?如果黑客拥有完整的用户记录,这会使盐值无用吗?