Tag: .net 2.0

使用HttpWebResponse读取“chunked”响应

当使用StreamReader读取HttpWebResponse的GetResponseStream()返回的流时,我在读取“chunked”响应时遇到问题: // response is an HttpWebResponse StreamReader reader = new StreamReader(response.GetResponseStream()); string output = reader.ReadToEnd(); // throws exception… 当reader.ReadToEnd()方法时,我得到以下System.IO.IOException: 无法从传输连接读取数据:连接已关闭。 当服务器返回“非分块”响应时,上面的代码工作得很好。 我能够让它工作的唯一方法是使用HTTP / 1.0作为初始请求(而不是默认的HTTP / 1.1),但这似乎是一种蹩脚的解决方法。 有任何想法吗? @Chuck 你的解决方案非常好用。 它仍然在最后一个Read()上抛出相同的IOExeception。 但在检查StringBuilder的内容后,看起来已经收到了所有数据。 所以也许我只需要在try-catch中包装Read()并吞下“错误”。

在代码中从c#调用网页

我需要一种从我的.net应用程序内部调用网页的方法。 但我只想向页面发送请求而不用担心响应。 因为有时候响应可能需要一段时间,所以我不希望它挂起应用程序。 我一直在尝试使用page_load事件 WebClient webC = new WebClient(); Uri newUri = new Uri(“http://localhost:49268/dosomething.aspx”); webC.UploadStringAsync(newUri, string.Empty); 即使它设置为Async,它仍然会挂起,因为页面不会完成呈现,直到线程已经完成

WebResource.axd错误 – “这是一个无效的Web资源请求。”

我有一个大型.NET 2 Web应用程序已更新为目标.NET 4.0框架。 自更新以来,我看到我的日志中经常出现以下错误: 这是一个无效的Web资源请求。 请求的资源是“ 〜/ WebResource.axd ”据我所知,请求看起来很好,因为有一个长的查询字符串,其中包含键(键是d , t )和这些键的值。 是否在框架版本之间更改了对WebResource.axd生成请求的机制? 有没有人对如何调试此问题有任何建议? 编辑:我找到了解密Web资源请求查询字符串的方法(代码如下)。 请求的资源是pCSSFriendly|CSSFriendly.CSS.Menu.css ,这看起来像是解决了应用程序使用的CSSFriendly.MenuAdapter资源的问题。 领先的“p”看起来可能是问题所在。 private string DecryptWebResource(string urlEncodedData) { byte[] encryptedData = HttpServerUtility.UrlTokenDecode(urlEncodedData); Type machineKeySection = typeof(MachineKeySection); Type[] paramTypes = new Type[] { typeof(bool), typeof(byte[]), typeof(byte[]), typeof(int), typeof(int) }; System.Reflection.MethodInfo encryptOrDecryptData = machineKeySection.GetMethod(“EncryptOrDecryptData”, System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic, null, paramTypes, null); try […]

为什么无法捕获MissingMethodException?

我在ClickOnce部署的应用程序中依赖于.NET 2.0 SP2( ApplicationDeployment.CurrentDeployment.CheckForDetailedUpdate(false)方法仅适用于SP2)。 我想检查应用启动期间SP2是否存在。 我试图通过在调用仅SP2方法后捕获MissingMethodException来检测到这一点。 /// /// The SP2 bootstrapper does not allow HomeSite installation /// http://msdn.microsoft.com/en-us/vstudio/bb898654.aspx /// So we only advice the user to download .NET 2.0 SP2 manually. /// private void CheckDotNet2SP() { WaitHandle wh = new AutoResetEvent(true); try { wh.WaitOne(1); //this method is .NET 2.0 SP2 only } //NOTE: this catch […]

将大规模CSV文件上载到SQL Server数据库

我需要将大量(16GB,6500万条记录)CSV文件上传到SQL Server 2005数据库中的单个表。 有没有人对最佳方法有任何指示? 细节 我目前正在使用C#控制台应用程序(.NET framework 2.0)将导入文件拆分为50000条记录的文件,然后处理每个文件。 我使用SqlBulkCopy类将数据从控制台应用程序上传到数据库中,批量为5000.分割文件大约需要30分钟,上传整个数据集(6500万条记录)大约需要4.5小时。 生成的文件大小和批量上载大小都是配置​​设置,我正在研究增加两者的值以提高性能。 要运行该应用程序,我们使用具有16GB RAM的四核服务器。 该服务器也是数据库服务器。 更新 鉴于到目前为止的答案,请注意在导入之前: 截断数据库表,并删除所有索引和约束。 数据库收缩,回收磁盘空间。 导入完成后: 索引将重新创建 如果您可以建议任何不同的方法,或者我们可以改进现有导入应用程序的方法,我将不胜感激。 谢谢。 相关问题 以下问题可能对处理此问题的其他人有用: 从平面文件向SQL Server 2005插入数百万条记录的潜在缺陷 解 我已经研究了改变批量大小和拆分文件大小的影响,发现批量500条记录和200,000条记录的拆分文件最适合我的应用程序。 使用SqlBulkCopyOptions.TableLock也有帮助。 有关详细信息,请参阅此问题的答案。 我还研究了使用SSIS DTS包和BULK INSERT SQL脚本。 SSIS包看起来更快,但没有让我能够记录无效记录等BULK INSERT SQL脚本虽然比SSIS包慢,但比C#应用程序要快得多。 它确实允许我记录错误等,因此,我接受来自ConcernedOfTunbridgeWells的BULK INSERT答案作为解决方案。 我知道这可能不是面对这个问题的每个人的最佳答案,但它解决了我的直接问题。 感谢所有回复的人。 此致,MagicAndi

在.Net 2.0中关闭SerialPort时出现ObjectDisposedException

我有一个C#windows窗体应用程序,它通过COM端口与USB加密狗通信。 我正在使用.Net 2.0中的SerialPort类进行通信,并且串行端口对象在应用程序的生命周期内是打开的。 应用程序向设备发送命令,还可以从设备接收未经请求的数据。 表单关闭时出现问题 – 在尝试关闭COM端口时,我(随机地,不幸地)得到了ObjectDisposedException。 这是Windows堆栈跟踪: System.ObjectDisposedException was unhandled Message=Safe handle has been closed Source=System ObjectName=”” StackTrace: at Microsoft.Win32.UnsafeNativeMethods.SetCommMask(SafeFileHandle hFile, Int32 dwEvtMask) at System.IO.Ports.SerialStream.Dispose(Boolean disposing) at System.IO.Ports.SerialStream.Finalize() InnerException: 我找到了有类似问题的人的post,并尝试了解决方法[这里] [1] [1]:http: //zachsaw.blogspot.com/2010/07/net-serialport-woes.html虽然这是针对IOException并且没有阻止问题。 我的Close()代码如下: public void Close() { try { Console.WriteLine(“******ComPort.Close – baseStream.Close*******”); baseStream.Close(); } catch (Exception ex) { Console.WriteLine(“******ComPort.Close baseStream.Close raised exception: ” […]

在方法内创建委托类型

我想在方法中的C#中创建一个委托类型,以便创建匿名方法。 例如 : public void MyMethod(){ delegate int Sum(int a, int b); Sum mySumImplementation=delegate (int a, int b) {return a+b;} Console.WriteLine(mySumImplementation(1,1).ToString()); } 不幸的是,我不能在.NET 2.0和C#2.0中这样做。

使用Reflection设置类型为List 的Property

如何使用reflection创建具有自定义类(List )的通用List? 我需要能够添加值并使用propertyInfo.SetValue(…, …, …)来存储它。 将这些List 存储为其他数据结构会更好吗? 编辑: 我应该指定对象更像是这样,但Marc Gravell的答案仍然有用。 class Foo { public List Bar { get; set; } }

如何在用户控件上创建不可见区域

我想让我的用户控件有不可见的区域,如围绕圆形或不规则形状的区域。 我已经看到使用system.windows.form完成此操作,但没有使用system.windows.form.usercontrol。 这是怎么做到的? .net 2.0,c#,winform

winform的MVP框架

我正在一个新项目工作,我想实现MVP模式。 有一个使用这种模式的winforms框架? 我检查了CAB,但我的项目实现起来并不复杂,我搜索更简单的实现和使用。 谢谢!