小编Ste*_*iel的帖子

在Firefox中对已更改的文件使用FileReader.readAsArrayBuffer()

我遇到了一个奇怪的问题FileReader.readAsArrayBuffer,这似乎只影响Firefox(我在当前版本中测试过 - v40).我不知道我是做错了还是这是一个Firefox bug.

我有一些JavaScript readAsArrayBuffer用于读取<input>字段中指定的文件.在正常情况下,一切正常.但是,如果用户在<input>字段中选择后修改文件,readAsArrayBuffer可能会非常困惑.

ArrayBuffer我从后面readAsArrayBuffer总是有该文件最初的长度.如果用户更改文件以使其更大,我不会获得原始大小后的任何字节.如果用户更改文件以使其变小,则缓冲区仍然具有相同的大小,并且缓冲区中的"多余"填充有字符代码90(如果被视为字符串则为大写字母'Z').

由于此代码非常简单,并且在我测试的其他所有浏览器中都能完美运行,因此我认为这是一个Firefox问题.我已经将它报告为 Firefox的一个错误,但我想确保这不仅仅是我做错了.

可以通过以下代码段重现该行为.你所要做的就是:

  1. 浏览一个包含10个字符的文本文件(10个不是幻数 - 我只是以它为例)
  2. 观察结果是一个包含10个项目的数组,表示每个项目的字符代码
  3. 当它仍在运行时,从文件中删除5个字符并保存
  4. 观察结果仍然是10个项目的数组 - 前5个是正确的,但最后5个都是90个(大写字母Z)
  5. 现在添加了10个字符(所以文件现在长15个字符)
  6. 观察结果仍然是10个项目的数组 - 最后5个不返回

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)

javascript firefox filereader fileapi

18
推荐指数
2
解决办法
4万
查看次数

标记枚举没有两个值的幂

MSDN文档Flag属性,说,你应该:

定义2的幂的枚举常量,即1,2,4,8等.这意味着组合枚举常量中的各个标志不重叠.

......当然,我总是试着记住这样做.但是,没有任何强制执行,如果你只是创建一个枚举'基本'的方式,如...

[Flags]
public enum BrokenEnum
{
    None,
    FirstOption,
    SecondOption,
    ThirdOption
}
Run Code Online (Sandbox Code Playgroud)

......它的行为不会像预期的那样.为了解决这个问题,我正在寻找某种静态代码分析(如FxCop),当我的代码中存在类似上面的枚举时,它可以发出警告.我能找到的最接近的警告是' CA1008:Enums应该没有值 ' - 这对于正确设计标志枚举也很有用,但还不够.

在我的代码中找到设计错误的标志枚举的最佳方法是什么?解决方案越自动化越好.

c# enums code-analysis static-analysis

6
推荐指数
2
解决办法
963
查看次数

在telerik html文本框中呈现'&'时出错

如何处理Telerik HTML文本框中的&符号("&")?在渲染时,它给了我一个错误.另外,是否有人知道可能导致HTML文本框错误的任何其他字符?

telerik telerik-reporting

6
推荐指数
1
解决办法
4090
查看次数

在Silverlight中重新抛出异常时保留堆栈跟踪

我需要重新抛出一个被捕获并存储在其他地方的异常,而不会丢失有关何时首次捕获/存储异常的堆栈跟踪信息.我的代码看起来像这样:

    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中工作的堆栈跟踪?

.net c# silverlight exception

5
推荐指数
1
解决办法
1358
查看次数

在WebAPI中使用ContinueWith进行死锁

作为通过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.

更新:

上面的代码是我控制器中的整个代码.我试图用最少量的代码使这个可重复.我甚至在一个全新的解决方案中做到了这一点.我做的全部步骤:

  1. 从Windows 7上的Visual Studio 2013 Update 1(使用.NET Framework 4.5.1),使用ASP.NET Web应用程序模板创建一个新项目
  2. 选择Web API作为模板(在下一个屏幕上)
  3. 使用我原始代码中给出的示例替换自动创建的ValuesController中的Get()方法
  4. 点击F5启动应用程序并导航到./api/values - 请求将永久挂起
  5. 我也尝试在IIS中托管网站(而不是使用IIS Express)
  6. 我也尝试更新所有各种Nuget包,所以我在最新的一切

web.config不受模板创建的影响.具体来说,它具有:

<system.web>
   <compilation debug="true" targetFramework="4.5" />
   <httpRuntime targetFramework="4.5" />
</system.web>
Run Code Online (Sandbox Code Playgroud)

c# deadlock task-parallel-library asp.net-web-api

5
推荐指数
1
解决办法
1093
查看次数

C#使用Dockstyle并设置边距

我正在尝试以编程方式创建的新形式插入几个对象;基本上,我要Button在底部RichTextBox保留所有剩余空间。我将第一个设置为as Dock = DockStyle.Bottom,后一个设置为Dock = DockStyle.Filland它可以正常工作。

现在,我试图在元素之间插入一个间距,因此我在表单中添加了填充,并在按钮中添加了边距。第一个可以正常运行,但是margin不能正常运行,因此RichTextBoxand 之间没有空格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)

在此处输入图片说明

c# margin padding spacing winforms

4
推荐指数
1
解决办法
1万
查看次数

如何使用Visual Basic将一些XML插入到XDocument中?

我正在尝试在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代码着色)

Visual Basic内联XML

...产生此错误:

此操作将创建结构不正确的文档.

它不知道在哪里添加该内容.

如何告诉它将XML插入<urlset>

.net xml vb.net sitemap asp.net-mvc

3
推荐指数
2
解决办法
2161
查看次数