我遇到了一个奇怪的问题FileReader.readAsArrayBuffer
,这似乎只影响Firefox(我在当前版本中测试过 - v40).我不知道我是做错了还是这是一个Firefox bug.
我有一些JavaScript readAsArrayBuffer
用于读取<input>
字段中指定的文件.在正常情况下,一切正常.但是,如果用户在<input>
字段中选择后修改文件,readAsArrayBuffer
可能会非常困惑.
将ArrayBuffer
我从后面readAsArrayBuffer
总是有该文件最初的长度.如果用户更改文件以使其更大,我不会获得原始大小后的任何字节.如果用户更改文件以使其变小,则缓冲区仍然具有相同的大小,并且缓冲区中的"多余"填充有字符代码90(如果被视为字符串则为大写字母'Z').
由于此代码非常简单,并且在我测试的其他所有浏览器中都能完美运行,因此我认为这是一个Firefox问题.我已经将它报告为 Firefox的一个错误,但我想确保这不仅仅是我做错了.
可以通过以下代码段重现该行为.你所要做的就是:
function ReadFile() {
var input = document.getElementsByTagName("input")[0];
var output = document.getElementsByTagName("textarea")[0];
if (input.files.length === 0) {
output.value = 'No file selected';
window.setTimeout(ReadFile, 1000);
return;
}
var fr = new FileReader();
fr.onload = function() {
var data = fr.result;
var array = new …
Run Code Online (Sandbox Code Playgroud)在MSDN文档的Flag
属性,说,你应该:
定义2的幂的枚举常量,即1,2,4,8等.这意味着组合枚举常量中的各个标志不重叠.
......当然,我总是试着记住这样做.但是,没有任何强制执行,如果你只是创建一个枚举'基本'的方式,如...
[Flags]
public enum BrokenEnum
{
None,
FirstOption,
SecondOption,
ThirdOption
}
Run Code Online (Sandbox Code Playgroud)
......它的行为不会像预期的那样.为了解决这个问题,我正在寻找某种静态代码分析(如FxCop),当我的代码中存在类似上面的枚举时,它可以发出警告.我能找到的最接近的警告是' CA1008:Enums应该没有值 ' - 这对于正确设计标志枚举也很有用,但还不够.
在我的代码中找到设计错误的标志枚举的最佳方法是什么?解决方案越自动化越好.
如何处理Telerik HTML文本框中的&符号("&")?在渲染时,它给了我一个错误.另外,是否有人知道可能导致HTML文本框错误的任何其他字符?
我需要重新抛出一个被捕获并存储在其他地方的异常,而不会丢失有关何时首次捕获/存储异常的堆栈跟踪信息.我的代码看起来像这样:
public void Test()
{
int someParameter = 12;
ExecuteSomeAsyncMethod(someParameter, CallbackMethod);
}
public void CallbackMethod(object result, Exception error)
{
//Check for exceptions that were previously caught and passed to us
if(error != null)
//Throwing like this will lose the stack trace already in Exception
//We'd like to be able to rethrow it without overwriting the stack trace
throw error;
//Success case: Process 'result'...etc...
}
Run Code Online (Sandbox Code Playgroud)
我已经看到了这个使用反射的问题的解决方案(例如这里和这里)或使用序列化(例如这里)但是这些都不适用于我在Silverlight中(不允许私有反射,并且使用的是类/方法) Silverlight中不存在序列化方法).
有没有办法保留在Silverlight中工作的堆栈跟踪?
作为通过Web API公开一些现有代码的一部分,我们遇到了很多死锁.我已经能够将这个问题提炼到这个非常简单的例子中,这个例子将永远挂起:
public class MyController : ApiController
{
public Task Get()
{
var context = TaskScheduler.FromCurrentSynchronizationContext();
return Task.FromResult(1)
.ContinueWith(_ => { }, context)
.ContinueWith(_ => Ok(DateTime.Now.ToLongTimeString()), context);
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说,这段代码看起来很简单.这可能看起来有点人为,但这只是因为我尽可能地尝试简化问题.看起来像这样链接的两个ContinueWiths会导致死锁 - 如果我注释掉第一个ContinueWith(它实际上并没有做任何事情),它会正常工作.我也可以通过不给出特定的调度程序来"修复"它(但这对我们来说不是一个可行的解决方案,因为我们的实际代码需要在正确/原始的线程上).在这里,我将两个ContinueWiths放在一起,但在我们的实际应用中,有很多逻辑正在发生,而ContinueWiths最终来自不同的方法.
我知道我可以使用async/await重新编写这个特定的例子,它会简化一些事情并且似乎可以修复死锁.但是,我们在过去几年中已经编写了大量遗留代码 - 其中大部分都是在异步/等待出现之前编写的,所以它大量使用了ContinueWith.如果我们能够避免它,重写所有逻辑并不是我们现在想要做的事情.像这样的代码在我们遇到的所有其他场景(桌面应用程序,Silverlight应用程序,命令行应用程序等)中运行良好 - 它只是给我们这些问题的Web API.
有没有什么可以一般性地完成,可以解决这种僵局?我正在寻找一种解决方案,希望不会重写所有的ContinueWith来使用async/await.
更新:
上面的代码是我控制器中的整个代码.我试图用最少量的代码使这个可重复.我甚至在一个全新的解决方案中做到了这一点.我做的全部步骤:
web.config不受模板创建的影响.具体来说,它具有:
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式创建的新形式插入几个对象;基本上,我要Button
在底部RichTextBox
保留所有剩余空间。我将第一个设置为as Dock = DockStyle.Bottom
,后一个设置为Dock = DockStyle.Fill
and它可以正常工作。
现在,我试图在元素之间插入一个间距,因此我在表单中添加了填充,并在按钮中添加了边距。第一个可以正常运行,但是margin不能正常运行,因此RichTextBox
and 之间没有空格Button
。
这是代码和输出。我想念什么吗?
// Parent Form
SMSForm.Padding = new Padding(5);
// TextBox
RichTextBox SMStext = new RichTextBox();
SMSForm.Controls.Add(SMStext);
SMStext.Dock = DockStyle.Fill;
// Button
Button SMSsend = new Button();
SMSsend.Text = "Send SMS to ";
SMSForm.Controls.Add(SMSsend);
SMSsend.Margin = new Padding(10);
SMSsend.Dock = DockStyle.Bottom;
Run Code Online (Sandbox Code Playgroud)
我正在尝试在ASP.NET MVC项目中创建站点地图.
我的Node控制器中的代码...
Function Sitemap() As ContentResult
Dim db As New EfrDotOrgEntities
Dim Nodes = db.Node.ToList
Dim RequestUrl As Uri = Url.RequestContext.HttpContext.Request.Url
Dim AbsoluteRoot As String = String.Format("{0}://{1}", RequestUrl.Scheme, RequestUrl.Authority)
Dim map As XDocument = <?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
</urlset>
For Each n As Node In Nodes
map.Add(<url>
<loc><%= AbsoluteRoot + Url.RouteUrl("IdOnly", New With {.id = n.Id}) %></loc>
</url>)
Next
Return Content(map.ToString, "text/xml", Encoding.UTF8)
End Function
Run Code Online (Sandbox Code Playgroud)
(这是一个图像因为Stack Overflow没有很好地为VB代码着色)
...产生此错误:
此操作将创建结构不正确的文档.
它不知道在哪里添加该内容.
如何告诉它将XML插入<urlset>
?
c# ×4
.net ×2
asp.net-mvc ×1
deadlock ×1
enums ×1
exception ×1
fileapi ×1
filereader ×1
firefox ×1
javascript ×1
margin ×1
padding ×1
silverlight ×1
sitemap ×1
spacing ×1
telerik ×1
vb.net ×1
winforms ×1
xml ×1