我们的ASP.NET网站托管在Windows Server 2008和IIS7上.
最近我们遇到了某些IP的"攻击"问题,这些攻击通过提交带有无效参数的不同表单而产生大量错误.
我希望能够根据asp.net代码生成的列表阻止24小时的IP地址列表.我知道可以使用Web.config - ipSecurity Tag实现这一点.我找到了以下示例:
http://www.dantor.com/support/misc/web-config-ip-address-restriction.aspx
问题是更改/更新web.config将导致网站重新启动/回收.
是否可以在没有池回收的情况下更新阻止的IP列表?
编辑:
也许更好的想法是使用HttpModule实现这一点--Scott Hanselman在他的博客中写了一篇关于这个主题的帖子:http: //www.hanselman.com/blog/AnIPAddressBlockingHttpModuleForASPNETIn9Minutes.aspx
你认为这会导致性能下降吗?通过httpmodule路由所有网站请求可能会影响页面加载时间?关于如何完成这项工作的任何其他想法?
编辑2:
该网站受Fortigate 200a防火墙保护,但据我所知,防火墙无法自动阻止生成错误或尝试进行SQL注入的IP.
我使用带ListView控件的WPF .
当某个参数设置为True时,我希望其中的行ListView具有闪烁动画.
我有以下代码可以工作,但一旦鼠标在动画的行上,动画就会停止.
我希望动画继续,直到参数更改回False.
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding Selected}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding DoBlink}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard FillBehavior="Stop">
<ColorAnimation Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)"
From="Blue" To="LightBlue" Duration="0:0:0.2"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud) 我正在使用ASP.NET MVC和Entity Framework开始一个新的小项目.(SQL Server - 大约20个DB表)在过去的项目中我使用过Linq2SQL,但它似乎已经过时了.
我已经阅读了很多关于使用EF存储库模式的帖子(优点和缺点),对我而言,没有存储库模式的代码似乎更好/更简单.
我创建了以下项目架构:
namespace MySite.Models
{
public class User
{
public Int32 ID { get; set; }
public String Email { get; set; }
public String Password { get; set; }
public String Name { get; set; }
public Int32 Gender { get; set; }
}
}
namespace MySite.DAL
{
public class Users
{
public static IEnumerable<User> GetUsers()
{
using (var context = new DatingSiteContext())
{
return context.Users.ToList();
}
}
public static User GetUserByID(int id) …Run Code Online (Sandbox Code Playgroud) 我正在使用Linq-to-SQL,我使用编译的Linq来获得更好的性能.
我有一个INT名为"LookingFor"字段的用户表,它可以具有以下值:1,2,3,12,123,13,23.
我写了一个查询,根据"lookingFor"列返回用户,我想返回包含"lookingFor"值的所有用户(不仅仅是那些等于它的用户).
在示例if user.LookingFor = 12和query参数中1,应该选择此用户.
private static Func<NeDataContext, int, IQueryable<int>>
MainSearchQuery = CompiledQuery.Compile((NeDataContext db, int lookingFor) =>
(from u in db.Users
where (lookingFor == -1 ? true : u.LookingFor.ToString().Contains(lookingFor)
select u.username);
Run Code Online (Sandbox Code Playgroud)
这个工作在非编译的linq上,但在使用编译时抛出错误.如何使用编译的Linq修复它?
我收到此错误:
String.Contains方法仅支持可在客户端上计算的参数.
我正在使用SQL Server 2008.
我NVARCHAR(MAX)在表中有一个列,我想确保它是唯一的.该表有600,000条记录,每天增加50,000条记录.
目前在向表中添加项目之前,我检查它是否存在于表中,如果不存在,我将其插入.
IF NOT EXISTS (SELECT * FROM Softs Where Title = 'example example example.')
BEGIN
INSERT INTO Softs (....)
VALUES (...)
END
Run Code Online (Sandbox Code Playgroud)
我在Title列上没有索引
最近,我在向桌子插入物品时开始超时.
什么是维持独特的正确方法?
如果真的有帮助我可以将NVARCHAR(MAX)更改为NVARCHAR(450)
.net ×2
c# ×2
linq-to-sql ×2
asp.net ×1
asp.net-mvc ×1
binding ×1
iis ×1
iis-7 ×1
linq ×1
sql ×1
sql-server ×1
styles ×1
wpf ×1
wpf-controls ×1