小编soh*_*970的帖子

URL中片段标识符的有效字符列表?

我正在使用片段标识符为我的Web应用程序中的AJAX事件创建一个永久链接,类似于这个人.就像是:

http://www.myapp.com/calendar#filter:year/2010/month/5
Run Code Online (Sandbox Code Playgroud)

我做了很多搜索,但找不到片段识别符的有效字符列表.在W3C规范不提供任何内容.

我是否需要将字符编码与一般的URL相同?

在任何地方似乎都没有任何好的信息.

fragment-identifier

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

如何在一个web.config中组合http和https的WCF服务配置?

我花了很多时间搞清楚如何配置我的WCF服务,以便它们适用于生产环境中的https.

基本上,我需要这样做:

<behaviors>
  <serviceBehaviors>
    <behavior name="MyServiceBehavior">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
<services>
  <service name="MyNamespace.MyService" behaviorConfiguration="MyServiceBehavior">
    <endpoint address="" bindingNamespace="https://secure.mydomain.com" binding="basicHttpBinding" bindingConfiguration="HttpsBinding" contract="MyNamespace.IMyService"/>
  </service>
</services>
<bindings>
  <basicHttpBinding>
    <binding name="HttpsBinding">
      <security mode="Transport">
        <transport clientCredentialType="None"></transport>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)

bindingNamespace属性添加到端点是使其工作的最终因素.

但是这个配置在我在常规http下工作的本地开发环境中不起作用.所以我的配置是:

<behaviors>
  <serviceBehaviors>
    <behavior name="MyServiceBehavior">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
<services>
  <service name="MyNamespace.MyService" behaviorConfiguration="MyServiceBehavior">
    <endpoint address="" binding="basicHttpBinding" contract="MyNamespace.IMyService"/>
  </service>
</services>
Run Code Online (Sandbox Code Playgroud)

这里的区别是我将httpsGetEnabled属性设置为false,并删除了bindingConfiguration和bindingNamespace.

问题是: …

wcf web-config wcf-binding

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

为什么SQL不支持"= null"而不是"null"?

我没有问,如果它.我知道事实并非如此.

我很好奇原因.我已经阅读了支持文档,例如关于在MySQL中使用Nulls的支持文档,但它们并没有给出任何理由.他们只重复你必须使用的"是空"的口头禅.

这一直困扰着我.在进行动态SQL(那些必须要做的极少数时间)时,将"null"传递给where子句会更容易:

@where = "where GroupId = null"
Run Code Online (Sandbox Code Playgroud)

这将是常规变量的简单替换.相反,我们必须使用if/else块来执行以下操作:

if @groupId is null then
     @where = "where GroupId is null"
else
     @where = "where GroupId = @groupId"
end
Run Code Online (Sandbox Code Playgroud)

在更大更复杂的查询中,这是一个巨大的痛苦.有没有特定的原因,SQL和所有主要的RDBMS供应商都不允许这样做?它会产生某种关键字冲突或价值冲突?

编辑:

许多答案的问题(在我看来)是每个人都在设置null和"我不知道它的值是什么"之间的等价.这两件事之间存在巨大差异.如果null意味着"有一个值,但它是未知的"我会100%同意空值不能相等.但SQL null并不意味着.这意味着没有价值.任何两个为null的SQL结果都没有值. 没有价值不等于未知价值.两件不同的事情.这是一个重要的区别.

编辑2:

我遇到的另一个问题是其他HLL允许null = null完全正常并适当地解决它.例如,在C#中,null = null返回true.

sql null

25
推荐指数
5
解决办法
6681
查看次数

如何在C#中将JSON对象序列化或反序列化到某个深度?

我只想要一个对象的第一个深度级别(我不想要任何孩子).我愿意使用任何可用的库.大多数库只会在达到递归深度时抛出异常,而不是仅仅忽略.如果这不可能,有没有办法忽略给定某种数据类型的某些成员的序列化?

编辑:假设我有一个像这样的对象:

class MyObject
{
    String name = "Dan";
    int age = 88;
    List<Children> myChildren = ...(lots of children with lots of grandchildren);
}
Run Code Online (Sandbox Code Playgroud)

我想删除所有子(甚至复杂类型)以返回这样的对象:

class MyObject
{
    String name = "Dan";
    int age = 88;
    List<Children> myChildren = null;
}
Run Code Online (Sandbox Code Playgroud)

.net c# serialization json

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

缓存键导致错误"否定二进制补码的最小值无效".

这是我见过的最奇怪的错误之一.

我正在做一个非常简单的调用来从HttpRuntime缓存中返回值.电话是:

return HttpContext.Current.Cache[cacheKey];
Run Code Online (Sandbox Code Playgroud)

如果它返回null,那很好.我检查返回的值是否为null并相应地采取行动.我一直在使用这个电话.

最近,出于某种原因,当cacheKey设置为这个确切的值时:

"Topic_GridSelectAll:5,null,2010-08-31-20-00-00,Published,desc,5,1"
Run Code Online (Sandbox Code Playgroud)

抛出System.OverflowException:否定二进制补码数的最小值无效.

呼叫,相关代码或服务器没有任何变化.如果cacheKey的字符略有不同,那么它的工作原理非常好.例如,此cacheKey返回null而不抛出任何异常:

"Topic_GridSelectAll:5,null,2010-08-31-21-00-00,Published,desc,5,1"
Run Code Online (Sandbox Code Playgroud)

请注意,这两个字符串之间的唯一区别是时间字符:2010-08-31-20-00-00与2010-08-31-21-00-00.

为什么这会有什么不同呢?为什么现在这么久以后呢?

堆栈跟踪是:

[OverflowException: Negating the minimum value of a twos complement number is invalid.]
   System.Math.AbsHelper(Int32 value) +12753486
   System.Web.Caching.CacheMultiple.UpdateCache(CacheKey cacheKey, CacheEntry newEntry, Boolean replace, CacheItemRemovedReason removedReason, Object& valueOld) +142
   System.Web.Caching.CacheInternal.DoGet(Boolean isPublic, String key, CacheGetOptions getOptions) +122
   MyProject.Helpers.CacheHelper.GetData(String cacheDomain, String cacheKey) in ...
Run Code Online (Sandbox Code Playgroud)

我已经尝试更改缓存调用以使用HttpRuntime.Cache(即.HttpRuntime.Cache[cacheKey]),但这没有任何区别.我知道它是相同的底层缓存提供者,但我想也许不同的调用会产生影响.没有骰子.

c# asp.net integer httpruntime.cache

19
推荐指数
1
解决办法
3473
查看次数

使用JQuery设置名为"required"的属性和任何值都不起作用

这不起作用:

$("#elementId").attr("required", "true");
Run Code Online (Sandbox Code Playgroud)

在Chrome和Firefox中,DOM都会生成required属性(无值)或required=""(空值).

并且这个例子中的值是"真"并不重要.如果你尝试"asdf"同样的事情发生.

奇怪的是,我相信这曾经发挥作用,因为这个新代码是一个持续了好几年的大型项目的一部分.

我唯一能想到的是我的Chrome(v10)和Firefox(v4)现在都已经足够先进,他们将所需属性识别为HTML5保留关键字.我添加了novalidate属性,认为这可能会关闭任何与表单相关的HTML5.没有这样的运气.

思考?

编辑:

为了澄清,这只发生在JQuery上.如果我这样说,它有效:

$("#elementId")[0].setAttribute("required", "true");
Run Code Online (Sandbox Code Playgroud)

JQuery中有错误吗?知道为什么这只发生在JQuery上吗?我们的开发团队喜欢所有代码,尽可能通过JQuery.我可以使用直接的setAttribute JavaScript方法,但宁可使用可行的JQuery解决方案.

编辑2:

问题的症结在于......

为什么attr()在常规setAttribute()方法中使用JQuery的方法不起作用?该attr()方法setAttribute()在某些时候调用是否较低?

这就是令人困惑的事情.required="true"如果您使用setAttribute(),则Chrome和Firefox是完美的设置.

html javascript jquery

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

是否有必要在SQL表中的每个可查询字段组合上建立索引以优化性能?

如果我的User表有几个可查询的字段(例如DepartmentId,GroupId,RoleId),如果我为这些字段的每个组合创建索引,它会产生任何速度差异吗?

通过"可查询",我指的是一个查询屏幕,最终用户可以通过从下拉列表中选择,根据部门,组或角色选择记录.

目前,我有一个关于DepartmentId,GroupId和RoleId的索引.这是每个字段的单个非唯一索引.

如果最终用户选择"B组中的任何人",则SQL看起来像:

select * from User where GroupId = 2
Run Code Online (Sandbox Code Playgroud)

拥有GroupId的索引应该加快速度.

但是如果最终用户选择"B组和角色C中的任何人",则SQL将如下所示:

select * from User where GroupId = 2 and RoleId = 3
Run Code Online (Sandbox Code Playgroud)

单独拥有GroupId和RoleId的索引可能没有任何区别,对吧?

为寻求更好的指标是,如果我有一个指数跨越两个 groupId和角色ID.

但如果是这样的话,那就意味着我需要为可查询字段的每个组合都有一个索引.所以我需要所有这些索引:

  • DepartmentID的
  • GroupId的
  • 角色ID
  • DepartmentId和GroupId
  • DepartmentId和RoleId
  • GroupId和RoleId
  • 部门ID,GroupId和RoleId

任何人都可以对此有所了解吗?我正在使用MySQL,如果这有所作为.

mysql sql database indexing

7
推荐指数
1
解决办法
2082
查看次数

&符号旁边的哪些其他字符应该在HTML href/src属性中编码?

&符号是否应该在HTML属性中编码的唯一字符?

众所周知,这不会通过验证:

<a href="http://domain.com/search?q=whatever&lang=en"></a>
Run Code Online (Sandbox Code Playgroud)

因为&符号应该是&amp;.这是验证失败的直接链接.

这个人列出了一堆应编码的字符,但他错了.如果你编码http://href中的第一个"/" 将无法正常工作.

在ASP.NET中,是否已经构建了一个帮助方法来处理这个问题?像Server.UrlEncode和HtmlEncode这样的东西显然不起作用 - 这些用于不同的目的.

我可以构建我自己的简单扩展方法(如.ToAttributeView()),它可以进行简单的字符串替换.

html href url-encoding

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

有很多枚举值有什么害处吗?(许多> = 1000)

我有一个很大的错误消息列表,我的商业代码可以根据输入的内容返回.该列表最终可能超过一千.

我想直接枚举这些,使用[Description("")]属性来记录友好消息.

就像是:

public enum ErrorMessage
{
     [Description("A first name is required for users.")]
     User_FirstName_Required = 1,
     [Description("The first name is too long.  It cannot exceed 32 characters.")]
     User_FirstName_Length = 2,
     ...
}
Run Code Online (Sandbox Code Playgroud)

我知道枚举是原始类型,特别是整数.这么多整数应该没有任何问题,对吧?

有什么我没想到的吗?这似乎应该没问题,但我想我应该先花时间这样做,然后再这样做.

当.Net有很多值时,它们是否会关注枚举类型?

更新

我不想使用Resources的原因是因为

a)我需要能够使用整数值引用每个唯一的错误消息.除了其他内容之外,biz层还为API提供服务,并且必须返回表示错误的整数值列表.我不相信Resources允许您使用整数来处理资源值.我错了吗?

b)没有本地化要求.

.net c# enums integer

5
推荐指数
2
解决办法
1145
查看次数

单个SQL查询,返回相对于过去7天的"评论最多"的列表,但列表始终必须包含某些内容

首先看起来容易的东西现在变成了一个脑筋急转弯.

我正在构建您在新闻/博客网站右侧边栏中看到的"评论最多"或"最通过电子邮件"列表中的一个.

该列表必须与最近的日期范围(比如最近7天)相关,因为您希望列表始终保持新鲜并包含较新的内容.否则,收到大量评论的少数文章将始终位于列表顶部.

例如,在我的情况下,该网站有一些文章,每篇文章有几百个评论,但其余的都少于20.所以如果"最多评论"列表被拉出这样:

select
  ArticleId,
  count(CommentId) as Comments
from
  Comment
group by
  ArticleId
order by
  count(CommentId) desc
limit 10;
Run Code Online (Sandbox Code Playgroud)

然后,几篇有几百条评论的文章总是排在最前面.该列表永远不会改变.

所以我重新编写了select,包括过去7天:

select
  ArticleId,
  count(CommentId) as Comments
from
  Comment
where
  Created >= '2011-06-14'
group by
  ArticleId
order by
  count(CommentId) desc
limit 10;
Run Code Online (Sandbox Code Playgroud)

这看起来更好,但它仍然无法工作,因为它没有考虑过去7天内没有活动的情况.

如果在过去7天内没有发生任何事情(或只发生了一些评论),则该列表应包含此前的活动.底线 - 列表总是需要显示10篇文章.

我总是可以调用多个SQL语句,以7天的增量返回,直到我填写列表,但我不想这样做.我正在缓存进程内存中的结果,但我仍然希望尽可能只进行一次SQL调用.

思考?我觉得这很容易实现,我只是忽略了一个明显的地方.

mysql sql aggregate

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

增量运算符(++)如何在C#中的DateTime上工作

如果在C#中的DateTime类型上使用增量运算符(++)会发生什么?

例如,如果我这样做:

DateTime blah = new DateTime(2010, 12, 24);

blah++;
Run Code Online (Sandbox Code Playgroud)

什么会变成什么?这会增加一个刻度还是一天?

或者这甚至是合法的?

我周围没有开发环境,也不会有几天,或者我会试着找出来.我太好奇不能等待,所以我想我会问社区.

c# datetime operator-overloading

0
推荐指数
1
解决办法
478
查看次数