小编Che*_*eso的帖子

什么是JSONP,为什么创建它?

我理解JSON,但不了解JSONP.维基百科关于JSON的文档是JSONP的最佳搜索结果.它说:

JSONP或"带填充的JSON"是JSON扩展,其中前缀被指定为调用本身的输入参数.

咦?什么电话?这对我没有任何意义.JSON是一种数据格式.没有电话.

第二个搜索结果是由某些人叫雷米,谁写的这个约JSONP:

JSONP是脚本标记注入,将响应从服务器传递到用户指定的函数.

我可以理解这一点,但它仍然没有任何意义.


那么什么是JSONP?它为什么被创建(它解决了什么问题)?为什么我会用它?


附录:我刚刚在维基百科上为JSONP创建了一个新页面 ; 根据jvenema的回答,它现在对JSONP进行了清晰而全面的描述.

javascript json jsonp terminology

2040
推荐指数
8
解决办法
46万
查看次数

如何选择AES加密模式(CBC ECB CTR OCB CFB)?

在哪种情况下哪一个更受青睐?

我想看看各种模式的评估crtieria列表,​​也许可以讨论每个标准的适用性.

例如,我认为其中一个标准是加密和解密的"代码大小",这对于微代码嵌入式系统(如802.11网络适配器)非常重要.如果实现CBC所需的代码远小于CTR所需的代码(我不知道这是真的,这只是一个例子),那么我就能理解为什么使用较小代码的模式会更受欢迎.但是,如果我正在编写一个在服务器上运行的应用程序,并且我使用的AES库无论如何都实现了CBC和CTR,那么这个标准就无关紧要了.

请参阅"每个标准的评估标准和适用性列表"的含义?

这与编程无关,但与算法有关.

encryption aes

445
推荐指数
6
解决办法
38万
查看次数

Response.End()被认为是有害的吗?

这篇知识库文章说,ASP.NET Response.End()中止了一个帖子.

反射器显示它看起来像这样:

public void End()
{
    if (this._context.IsInCancellablePeriod)
    {
        InternalSecurityPermissions.ControlThread.Assert();
        Thread.CurrentThread.Abort(new HttpApplication.CancelModuleException(false));
    }
    else if (!this._flushing)
    {
        this.Flush();
        this._ended = true;
        if (this._context.ApplicationInstance != null)
        {
            this._context.ApplicationInstance.CompleteRequest();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很苛刻.正如知识库文章所说,以下应用程序中的任何代码Response.End()都不会被执行,这违反了最不惊讶的原则.它几乎就像Application.Exit()在WinForms应用程序中.造成线程终止异常Response.End()不开捕,所以代码周围的try...... finally不会满足.

这让我想知道我是否应该总是避免Response.End().

任何人都可以建议,我什么时候应该使用Response.End(),何时Response.Close()何地HttpContext.Current.ApplicationInstance.CompleteRequest()

参考:Rick Strahl的博客文章.


根据我收到的输入,我的回答是,是的,Response.End是有害的,但在某些有限的情况下它是有用的.

  • 使用Response.End()作为一个不可捕获抛出,立即终止HttpResponse在特殊的条件.在调试过程中也很有用. 避免Response.End()完成常规反应.
  • 用于Response.Close()立即关闭与客户端的连接.根据此MSDN博客文章,此方法不适用于正常的HTTP请求处理. 你不太可能有充分的理由来调用这种方法.
  • 用于 …

.net asp.net

197
推荐指数
5
解决办法
8万
查看次数

为什么XML-Serializable类需要无参数构造函数

我正在编写代码来进行Xml序列化.具有以下功能.

public static string SerializeToXml(object obj)
{
    XmlSerializer serializer = new XmlSerializer(obj.GetType());
    using (StringWriter writer = new StringWriter())
    {
        serializer.Serialize(writer, obj);
        return writer.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果参数是没有无参数构造函数的类的实例,它将抛出异常.

未处理的异常:System.InvalidOperationException:CSharpConsole.Foo无法序列化,因为它没有无参数构造函数.System.Xml.Serialization.ModelScope.GetTypeModel的System.Xml.Serialization.TypeScope.GetTypeDesc(Type type,MemberInfo sourc e,Boolean directReference,Boolean throwOnError)中的System.Xml.Serialization.TypeDesc.CheckSupported()处于类型类型, System.Xml.Serialization上的System.Xml.Serialization.XmlSerializer..ctor(Type type,String defaultName space)中System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type,XmlRootAttribute root,String defaultNamespace)的布尔直接引用. XmlSerializer..ctor(类型类型)

为什么必须有一个无参数构造函数才能使xml序列化成功?

编辑:感谢cfeduke的回答.无参数构造函数可以是私有的或内部的.

.net c# xml-serialization

168
推荐指数
3
解决办法
11万
查看次数

如何使用C#压缩文件,不使用第三方API?

我很确定这不是重复的,所以请耐心等待一分钟.

如何在不使用任何第三方库的情况下以编程方式(C#)压缩文件(在Windows中)?我需要一个原生的Windows调用或类似的东西; 我真的不喜欢开始一个过程的想法,但如果我绝对不得不这样做.PInovke呼叫会好得多.

如果做不到这一点,让我告诉你我真正想要实现的目标:我需要能够让用户在一个请求中下载一组文档.有关如何实现这一目标的任何想法?

c# compression zip download

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

我怎么能说服IE只显示application/json而不是提供下载呢?

在调试使用AJAX的jQuery应用程序时,我经常需要查看服务返回给浏览器的json.所以我将把JSON数据的URL丢弃到地址栏中.

这对ASPNET很好,因为在编码错误的情况下,我可以在浏览器中看到ASPNET诊断:

替代文字

但是当服务器端代码正常工作并实际返回JSON时,IE会提示我下载它,所以我看不到响应.

替代文字

我可以让IE不这样做,换句话说,只是将它显示为纯文本?

我知道如果我将Content-Type标头设置为,我可以这样做text/plain.

但这特别是ASPNET MVC应用程序的上下文,当我在我的一个动作方法上使用JsonResult时,它自动设置响应.另外,我有点想保留适当的内容类型,而不是仅仅为了支持调试工作而改变它.

ajax asp.net-mvc jquery internet-explorer asp.net-ajax

161
推荐指数
3
解决办法
14万
查看次数

如何在JavaScript中舍入数字?.toFixed()返回一个字符串?

我在这里错过了什么吗?

var someNumber = 123.456;
someNumber = someNumber.toFixed(2);
alert(typeof(someNumber));
//alerts string
Run Code Online (Sandbox Code Playgroud)

为什么.toFixed()返回一个字符串?

我想将数字四舍五入到2位小数.

javascript types rounding

154
推荐指数
8
解决办法
9万
查看次数

如何可靠地确定在设计时使用var声明的变量的类型?

我正在为emacs中的C#完成(intellisense)工具.

这个想法是,如果用户键入片段,然后通过特定的击键组合要求完成,则完成工具将使用.NET反射来确定可能的完成.

这样做需要知道正在完成的事物的类型.如果它是一个字符串,那么有一组已知的可能方法和属性; 如果它是一个Int32,它有一个单独的集,依此类推.

使用语义,emacs中提供的代码词法分析器/解析器包,我可以找到变量声明及其类型.鉴于此,可以直接使用反射来获取类型上的方法和属性,然后向用户显示选项列表.(好吧, emacs中做的不是那么简单,但是使用 emacs 中运行PowerShell进程的能力,它变得容易得多.我编写了一个自定义.NET程序集来进行反射,将其加载到powershell中,然后在内部运行elisp emacs可以通过comint向powershell发送命令并读取响应.因此,emacs可以快速获得反射结果.)

当代码var在声明正在完成的事物中使用时,问题就会到来.这意味着未明确指定类型,并且完成将不起作用.

当使用var关键字声明变量时,如何可靠地确定实际使用的类型?为了清楚起见,我不需要在运行时确定它.我想在"设计时"确定它.

到目前为止,我有这些想法:

  1. 编译并调用:
    • 提取声明语句,例如`var foo ="一个字符串值";`
    • 连接语句`foo.GetType();`
    • 将生成的C#片段动态编译为新的程序集
    • 将程序集加载到新的AppDomain中,运行framgment并获取返回类型.
    • 卸载并丢弃组件

    我知道怎么做这一切.但对于编辑器中的每个完成请求,它听起来非常重量级.

    我想我每次都不需要新的AppDomain.我可以为单个AppDomain重复使用多个临时程序集,并在多个完成请求中分摊设置和拆除它的成本.这更像是对基本理念的调整.

  2. 编译和检查IL

    只需将声明编译到模块中,然后检查IL,以确定编译器推断出的实际类型.这怎么可能?我会用什么来检查IL?

还有更好的想法吗?评论?建议?


编辑 - 进一步考虑这一点,编译和调用是不可接受的,因为调用可能有副作用.因此必须排除第一种选择.

此外,我认为我不能假设.NET 4.0的存在.


更新 - 上面没有提到的正确答案,但Eric Lippert温和地指出,是实现完全保真的类型推理系统.它是在设计时可靠地确定var类型的唯一方法.但是,这也不容易.因为我苦于没有幻想,我要试图建立这样的事情,我把选项2的快捷方式-提取相关声明代码,并编译它,然后检查所产生的IL.

这实际上适用于完成方案的公平子集.

例如,假设在下面的代码片段中,?是用户要求完成的位置.这有效:

var x = "hello there"; 
x.?
Run Code Online (Sandbox Code Playgroud)

完成意识到x是一个String,并提供适当的选项.它通过生成并编译以下源代码来实现:

namespace N1 {
  static class dmriiann5he { // randomly-generated class name
    static void M1 () {
       var x = "hello there"; 
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

......然后用简单的反射检查IL.

这也有效:

var x …
Run Code Online (Sandbox Code Playgroud)

c# reflection type-inference appdomain

109
推荐指数
3
解决办法
3万
查看次数

Javascript AES加密

在Javascript中是否有可用于AES 256位加密的库?

javascript encryption aes

108
推荐指数
8
解决办法
17万
查看次数

如何在不获取xmlns ="..."的情况下将对象序列化为XML?

有没有办法让我在.NET中序列化一个对象,而XML Namespaces也不会自动序列化?似乎默认情况下.NET认为应该包含XSI和XSD名称空间,但我不希望它们存在.

.net xml-serialization xml-namespaces

102
推荐指数
5
解决办法
10万
查看次数