LINQ注入无效字符

时间:2009-02-10 19:53:01

标签: asp.net linq iis-7

我们目前正在从Server 2003迁移到Server 2008.我们对ASP.NET应用程序进行了一些不同的环境更改。我们的测试环境目前运行良好,但具有相同代码的生产机器将无效字符注入SQL。

以下是我通过SQL Server Profiler看到的SQL。

exec sp_executesql N'SELECT [t0].[VenuePDID], [t0].[VenueID], [t0].[VenueNumber], [t0].[MarketID], [t0].[ProgramID], [t0].[VenueTypeID], [t0].[SalesTypeID], [t0].[BackBarPaymentID], [t0].[Goal], [t0].[LocationTypeID], [t0].[VenueStatus], [t0].[Tab1ConfirmDate], [t0].[Tab1ConfirmedBy], [t0].[Tab2ConfirmDate], [t0].[Tab2ConfirmedBy], [t0].[DateContractRequested], [t0].[ContractRequestedBy], [t0].[ContractTypeRequested], [t0].[ContractAmtRequested], [t0].[ContractAmtLimit], [t0].[ContractSalesAmtRequested], [t0].[ContractSalesAmtMax], [t0].[ContractPerVistAmtLimit], [t0].[ContractSalesPerVisitAmtLimit], [t0].[ActiveDate], [t0].[InactiveDate], [t0].[WebsiteRejected], [t0].[ResponsibleGM], [t0].[CreateDate], [t0].[CreatedBः㐈   [1]     
[1] 볧इ퀄㐀޼SELECT [t0].dBy], [t0].[timestamp], [t0].[DetailConfirmDate], [t0].[DetailConfirmBy], [t0].[SalesConfirmDate], [t0].[SalesConfirmBy], [t0].[ContractTypeId]
FROM [dbo].[tbl_VenueProgramDetails] AS [t0]
WHERE ([t0].[VenueID] = @p0) AND ([t0].[ProgramID] = @p1)',N'@p0 int,@p1 int',@p0=7477,@p1=27

我已经从工作测试环境中复制了所有的dll,我得到了同样的东西。我还将测试Web服务器指向了实时数据库并且代码正常工作。我已经将实时Web服务器指向测试数据库,代码就像上面那样失败了。此时问题必须是IIS7配置或生产服务器上的.Net。我似乎无法指出它。有没有人看过这个?

2 个答案:

答案 0 :(得分:1)

该问题最终成为网卡驱动程序。物理机器的问题不是配置或代码。

编辑:我遇到问题的机器是带有Broadcom网卡的HP DL360。我们将就此问题与HP联系。通过线路发送LINQ请求时,数据包组装错误。

答案 1 :(得分:0)

  

CreatedB \ u0903 \ u3408 [1] \ uffff

那不是真正的Unicode ... U + FFFF显然不是一个Unicode字符,只有一个!

某些东西似乎是在内存的任意位上吐出二进制损坏。找到它并不会很有趣,因为它很可能是令人不快的低级别的东西。您的应用程序或生产计算机上的ISAPI扩展程序是否使用了任何可疑的非托管组件? (甚至其他钩子,比如狡猾的反病毒?)