天道酬勤,学无止境

.net

防止asp.net中的跨站点脚本攻击[关闭](prevent cross site scripting attack in asp.net [closed])

问题 关闭。 这个问题需要细节或清晰度。 它目前不接受答案。 想改善这个问题吗? 通过编辑此帖子添加详细信息并澄清问题。 6年前关闭。 改进这个问题 我在asp.net websform 中有一个按编号搜索的页面。 我想制作该页面,以便它可以防止任何跨站点脚本。 任何人都可以为我建议最好的解决方案。? 回答1 MSDN 文章“如何:防止 ASP.NET 中的跨站点脚本”详细介绍了它。 部分内容如下。 步骤总结要防止跨站点脚本,请执行以下步骤: 步骤 1. 检查 ASP.NET 请求验证是否已启用。 步骤 2. 查看生成 HTML 输出的 ASP.NET 代码。 步骤 3. 确定 HTML 输出是否包含输入参数。 步骤 4. 查看潜在危险的 HTML 标签和属性。 步骤 5. 评估对策。 步骤 1. 检查 ASP.NET 请求验证是否已启用默认情况下,在 Machine.config 中启用请求验证。 验证当前在您的服务器的 Machine.config 文件中启用了请求验证,并且您的应用程序未在其 Web.config 文件中覆盖此设置。 检查 validateRequest 是否设置为 true,如以下代码示例所示。 <system.web> <pages buffer="true" validateRequest="true" /> </system.web>

2021-09-21 19:31:46    分类:技术分享    c#   asp.net   .net   xss

如何将 HostControl 实例传递给 TopShelf 中的自定义主机服务?(How to pass HostControl instance to custom host service in TopShelf?)

问题 这个问题已经在 SO 的其他地方被问到,但是没有迹象表明我是如何像帖子所建议的那样获得HostControl的实例的。 我的 TopShelf 主程序如下所示: public static void Main() { HostFactory.Run(CreateHost); } private static void CreateHost(HostConfigurator x) { x.UseLog4Net(); x.Service<EventBroker>(s => { s.ConstructUsing(name => new EventBroker()); s.WhenStarted(tc => tc.Start()); s.WhenStopped(tc => tc.Stop()); }); x.StartAutomatically(); x.RunAsNetworkService(); } 有什么建议么? 回答1 更改 WhenStarted 以将 HostControl 像这样传递给它 s.WhenStarted((tc, hostControl) => tc.Start(hostControl)); 每个 TopShelf 文档在这里 http://topshelf.readthedocs.org/en/latest/configuration/config_api

2021-09-21 19:29:32    分类:技术分享    c#   .net   console-application   topshelf

如何确定事件是由用户操作还是由代码触发?(How can I determine if an event was fired by a user action or by code?)

问题 我在一个表单上有一堆控件,它们的所有“更改”事件都指向同一个事件处理程序。 其中一些是 txtInput1 的TextChanged 、 chkOption1 的CheckedChanged和 cmbStuff1 的SelectedIndexChanged 。 这是事件处理程序: private void UpdatePreview(object sender, EventArgs e) { // TODO: Only proceed if event was fired due to a user's clicking/typing, not a programmatical set if (sender.IsSomethingThatTheUserDid) // .IsSomethingThatTheUserDid doesn't work { txtPreview.Text = "The user has changed one of the options!"; } } 我希望 if 语句仅在用户更改 TextBox 文本或单击复选框或其他任何内容时运行。 如果程序的其他部分更改了文本或复选框,我不希望它发生。 回答1 没有内置机制可以做到这一点。 但是,您可以使用标志。 bool updatingUI = false; private void

2021-09-21 18:59:20    分类:技术分享    c#   .net   events

VB.NET中的静态方法实现(Static Method implementation in VB.NET)

问题 我对 VB.NET 中的Static实现感到困惑。 在 C# 中,我们可以创建静态类和静态方法来为我们的应用程序编写实用程序方法。 现在,VB.NET 让我们创建Module来代替静态类。 如果我们在模块中创建一个方法,默认情况下它会变成静态的。 但是在我的应用程序中,我编写了以下代码: Public Class Utility Public Shared Function GetValue() As String // My code End Function End Class 通过编写代码,我能够以Utility.GetValue()访问实用程序方法。 由于这不是静态类,我应该实例化它的一个对象。 但是这个方法对Utility的类和对象都可用 现在我的问题是: 我所做的实现是否可能违反模块提供的静态类的任何功能? 这与实现模块有什么区别? 如果我创建一个模块,它的范围是否与此类相同? 我想在整个项目以及引用此方法的其他项目中访问该方法。 我尝试查阅多篇文章,但没有找到确切的答案。 请帮忙。 回答1 VB.NET 模块是一个静态类。 编译器会为您处理这个问题。 它的每个方法和属性都是static ( Shared )。 具有静态(共享)成员的类正是这样:具有静态(共享)成员的类。 您不必创建它的实例来访问静态(共享)方法,但您必须创建它的任何实例成员。

2021-09-21 18:43:14    分类:技术分享    .net   vb.net   static

How to insert 4 million records from Oracle to Elasticsearch table faster using C#?(How to insert 4 million records from Oracle to Elasticsearch table faster using C#?)

问题 我有以下用 C# 编写的代码,但据此,将数据从 Oracle 数据库迁移到 Elasticsearch 需要 4-5 天。 我以 100 条为一组插入记录。有没有其他方法可以更快地迁移 400 万条记录(如果可能的话,可能在不到一天的时间内)? public static void Selection() { for(int i = 1; i < 4000000; i += 1000) { for(int j = i; j < (i+1000); j += 100) { OracleCommand cmd = new OracleCommand(BuildQuery(j), oracle_connection); OracleDataReader reader = cmd.ExecuteReader(); List<Record> list=CreateRecordList(reader); insert(list); } } } private static List<Record> CreateRecordList(OracleDataReader reader) { List<Record> l = new List<Record>(); string[] str = new string[7]; try { while (reader.Read()) { for

2021-09-21 18:39:29    分类:技术分享    c#   .net   oracle   elasticsearch   nest

远程设置超时(Remoting set timeout)

问题 我的棕地应用程序中使用了 .NET 远程处理。 我们决定为我们的远程方法设置超时。 System.Collections.IDictionary properties = new System.Collections.Hashtable(); properties["name"] = Ipc_Channel_Name; properties["timeout"] = 1 * 1000; IChannel clientChannel = new IpcClientChannel(properties, null); ChannelServices.RegisterChannel(clientChannel, false); 问题是超时似乎不起作用。 我通过设置System.Threading.Thread.Sleep(5 * 1000); 在调用的代码中。 是 IpcClientChannel 不支持超时的原因吗? 如何设置超时时间? 回答1 设置 IpcClientChannel 超时的属性名称不是“超时”。 名称是"connectionTimeout" 。 请参阅客户端通道属性(MSDN)。 那么它应该工作。 System.Collections.IDictionary properties = new System.Collections.Hashtable()

2021-09-21 18:35:44    分类:技术分享    c#   .net   timeout   remoting   .net-remoting

适用于 Windows 98 的 .NET 2.0 应用程序安装程序(Installer for .NET 2.0 application for Windows 98)

问题 如何为 Windows 98 创建 .NET 2.0 应用程序的自动安装程序? 我的意思是应用程序和 .NET 2.0(如果丢失)。 我试图通过为 Visual Studio 2008 创建一个安装项目来做到这一点,但我没有成功。 我手动安装了 IE6 SP1,但安装程序仍然崩溃。 安装了 Windows Installer 2.0。 在那里安装 Installer 3.0 是不可能的。 我在安装项目先决条件中取消选中安装程序,但仍然无法安装该应用程序 - 错误消息表明它需要更新版本的 Windows。 如何解决这个问题? 回答1 如果您打算部署到Windows 9X或ME不要使用Visual Studio的2008年。 VS2008 不再支持这些操作系统,如果您坚持使用它们,您应该使用 VS2005 或更早版本。 另请参阅此问题:Visual Studio 2008 是否支持 windows 98? 回答2 根据这篇文章 Win98 is supported for 2.0 http://msdn.microsoft.com/en-us/library/aa480241.aspx 为什么不直接从 Microsoft 获取可再发行组件? http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362

2021-09-21 18:33:47    分类:技术分享    .net   windows   visual-studio-2008   .net-2.0   setup-project

在 C# 中,如何序列化 Queue<>? (.Net 2.0)(In C#, How can I serialize Queue<>? (.Net 2.0))

问题 在 XmlSerializer 构造函数行中,以下导致 InvalidOperationException 也抱怨没有为泛型类型实现默认访问器。 Queue<MyData> myDataQueue = new Queue<MyData>(); // Populate the queue here XmlSerializer mySerializer = new XmlSerializer(myDataQueue.GetType()); StreamWriter myWriter = new StreamWriter("myData.xml"); mySerializer.Serialize(myWriter, myDataQueue); myWriter.Close(); 回答1 从队列中序列化数据会更容易(也更适合 IMO) - 可能在平面数组或List<T> 。 由于Queue<T>实现了IEnumerable<T> ,您应该能够使用: List<T> list = new List<T>(queue); 回答2 并非框架的所有部分都是为 XML 序列化而设计的。 您会发现序列化部门也缺少字典。 队列的实现非常简单。 您可以轻松创建自己的,也实现 IList 以便它可以序列化。 回答3 如果您想使用内置序列化,您需要遵守其规则,这意味着默认构造函数,以及您想要序列化

2021-09-21 18:20:21    分类:技术分享    c#   .net   generics   serialization   .net-2.0

确定当前用户是域用户还是本地用户?(Determine if current user is a domain or local user?)

问题 有没有办法确定(最好是.NET)当前用户是域用户帐户还是本地用户帐户? 提前 - 我不知道正在运行的域名,所以我不能只查找 DOMAIN\Username v COMPUTER\Username。 部分答案可能是从代码中确定 DOMAIN 或 COMPUTER 名称。 [编辑] 扩展 Asher 的答案,代码片段将是 private bool isCurrentUserLocalUser() { return Environment.MachineName == Environment.UserDomainName; } 回答1 您可以使用 Environment.UserDomainName MSDN 文档解释了此属性在每种情况下的确切行为(域/本地帐户) 您可以将此属性与 Environment.MachineName 等其他属性结合使用,以确定所使用的用户帐户的类型。 请注意,域帐户不一定是 Active Directory(可以是 Novell Netware 的东西) 回答2 查看该帖子并检查它是否回答了您的问题 How-do-i-detect-if-my-program-runs-in-an-active-directory-environment 回答3 您可以查看完整的用户名,对于域和本地帐户,分别是 <domain name>\<username> 或

2021-09-21 18:18:38    分类:技术分享    .net

C#中的消息日志组件(Message Log Component in C#)

问题 我想要的是一个按时间顺序(最近在底部)显示消息列表的框,这在 FTP 应用程序和 IDE 中很常见。 这是 FileZilla 消息日志: FileZilla 中的消息日志示例 http://img571.imageshack.us/img571/9247/messageloginfilezilla.png 目前,我从只读文本框中获得了类似的功能,但这并不完美。 以下奖励积分: 上下文菜单有“复制此消息”选项按“级别”过滤将日志写入文件的选项 回答1 您可以登录事件日志。 它有相当实用的界面。 如果您计划切换到企业库支持的数据库、文件或其他日志记录目的地,您也可以使用企业库 回答2 这是为 log4net 制作的 WPF 中的一个:C# WPF Log4Net Viewer 编辑: Log2Console 是一个基于 ListView 控件的实用程序(winforms),用于在开发过程中处理日志:Log2Console - 通用日志查看器(用于 Log4Net、NLog...)

2021-09-21 18:18:00    分类:技术分享    c#   .net   logging   components