这发生在针对Google Cloud Messaging的编码环境中,但适用于其他地方.
考虑以下:
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("key=XXX");
Run Code Online (Sandbox Code Playgroud)
和
var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "key=XXX");
Run Code Online (Sandbox Code Playgroud)
这两个都生成FormatException:
System.FormatException:值key = XXX'的格式无效.
解决方案是删除等号.
深入研究反射器显示,在添加新的标头值时会运行大量的验证和解析代码.为什么这一切都是必要的?难道这个客户不应该让我们走开吗?
如何逃避等号以便添加此值成功?
当点击在Excel/Word中的链接,该链接后,会进入检查用户代理,以确定它是否支持或不一个网站,该网站可能会错误地假设你的时候,其实你用别的东西使用MSIE 7.0 ,说Chrome.
当检查与请求一起发送的用户代理时,它显示该请求来自MSIE 7.0 - 当从用户的角度来看,显然没有使用MSIE 7.0.
这里发生了什么?如何停止向用户显示错误消息?
以下代码抛出System.UriFormatException:
var uri = new UriBuilder("ftp://user:pass#word@ftp.somewhere.com:21/fu/bar.zip");
Run Code Online (Sandbox Code Playgroud)
System.UriFormatException:无效的URI:由于存在冒号(':')而无法解析端口,因此需要端口.
从密码字段中删除#符号可以解决问题.
谢谢,安德鲁
在ASP.NET MVC 4.0 WebAPI(测试版)中,我将返回一个序列化为大于65kb的JSON的对象.从下面的堆栈跟踪中可以看出,框架正在抛出异常,因为这超出了一些内部限制.
System.Net.Http.HttpRequestException: Cannot write more bytes to the buffer than the configured maximum buffer size: 65536.
at System.Net.Http.HttpContent.LimitMemoryStream.CheckSize(Int32 countToAdd)
at System.Net.Http.HttpContent.LimitMemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.IO.StreamWriter.Write(Char value)
at Newtonsoft.Json.JsonWriter.AutoComplete(JsonToken tokenBeingWritten) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonWriter.cs:line 634
at Newtonsoft.Json.JsonTextWriter.WritePropertyName(String name) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonTextWriter.cs:line 204
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.WriteMemberInfoProperty(JsonWriter writer, Object memberValue, JsonProperty property, JsonContract contract) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalWriter.cs:line 209
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContract collectionValueContract) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalWriter.cs:line 336
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.WriteMemberInfoProperty(JsonWriter writer, Object memberValue, …Run Code Online (Sandbox Code Playgroud) 使用SSMS导入平面文件选项将看似有效的平面文件(csv,文本等)导入SQL Server数据库时,会出现以下错误:
Microsoft SQL Server Management Studio
将数据插入表时出错.(Microsoft.SqlServer.Import.Wizard)
将数据插入表时出错.(Microsoft.SqlServer.Prose.Import)
你调用的对象是空的.(Microsoft.SqlServer.Prose.Import)
目标表可能包含导入得很好的行.未导入的第一行似乎没有格式错误.
出了什么问题?
根据问题数量,论坛帖子等,BCL中的TcpClient/NetworkStream实现似乎缺乏对取消IO操作的良好支持.随着.NET 4.5中Async方法的增加,这种缺少取消(或者不错的超时支持)使得事情变得更加令人沮丧,因为在执行IO时取消拒绝监视其CancellationToken的任务变得更加复杂(几乎不可能) .
我已经看到许多实现启动其他线程来监视网络操作并在事情看起来出错时关闭底层流.在我们试图通过使用异步操作来节省这些资源的世界中,这感觉非常脏.
任何人都可以指导我处理有效取消/超时网络IO操作或实际工作的强大第三方实施的指导方向吗?