小编Ser*_*pov的帖子

除非物理文件存在,否则Global.asax Application_BeginRequest不会触发 - 404

HttpContext.Current.RewritePath(...)在Global.asax中使用URL重写(),因此物理文件大多不存在.一切都工作正常,直到我不得不从IIS(8.5)中删除网站并再次添加它.

现在我发现每个请求都找不到404.示例http://localhost/site/article123 和Global.asax Application_BeginRequest事件甚至没有触发.

但是,如果我将在文件夹中添加空的default.aspx文件,/site/article123一切正常,URL正确地重写.

文件没有改变,所以它应该是IIS配置的问题.

我在web.config中有以下内容:
<modules runAllManagedModulesForAllRequests="true">

IIS中的项目设置为应用程序池.NET v2.0 Classic的应用程序

编辑:
IIS 8.0中的相同故事

.net asp.net iis url-rewriting global-asax

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

使用"和"或语法进行null检查

在jQuery 特殊事件文章中,我发现了以前没见过的语法:

var threshold = data && data.threshold || 1
Run Code Online (Sandbox Code Playgroud)

我之前见过以下内容:

var threshold = data.threshold || 1
Run Code Online (Sandbox Code Playgroud)

据我所知,这意味着:设置为data.threshold或者如果将其值null设置为1.我可以请先解释一下第一语法吗?

javascript syntax null

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

使用linq对嵌套列表进行分组

我有一个嵌套的对象列表.我需要分组identifierASum它的数字属性,嵌套列表应分别分组:

public class TypeA
{
    public String identifierA{ get; set; }
    public Int32 number { get; set; }
    public List<TypeB> nestedList { get; set; }
}
public class TypeB
{
    public String identifierB { get; set; }
    public Int32 otherNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所以我期待这样的事情:

var List<TypeA> groupedList = (from a in TypeAList
                               group a by a.identifierA
                               into groupedData
                               select new TypeA
                               {
                                   identifierA = groupedData.Key,
                                   number = groupedData.Sum(g => g.number ),
                                   nestedList = //HOW …
Run Code Online (Sandbox Code Playgroud)

c# linq group-by list

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

NServiceBus 不显眼的约定多次将命令定义为

似乎我不能多次定义命令/事件约定。每个注册的约定都将覆盖以前的约定。

这有效:

 configuration.Conventions()
            .DefiningCommandsAs(
                type => type.FullName == "MyProject1.CommandA" || type.FullName == "MyProject2.CommandB");
Run Code Online (Sandbox Code Playgroud)

但这不会:

        configuration.Conventions()
            .DefiningCommandsAs(
                type => type.FullName == "MyProject1.CommandA");

        configuration.Conventions()
            .DefiningCommandsAs(
                type => type.FullName == "MyProject2.CommandB");
Run Code Online (Sandbox Code Playgroud)

为什么我需要这个:

我正在开发一个包,一旦在 NSB 项目中引用,它将执行定期操作(发送消息)。它需要定义自己的命令约定,INeedInitialization在程序集扫描期间将采用这些约定。我不希望包的用户知道他需要注册包的约定。然而,宿主项目需要为命令注册自己的约定。因此,目前看来我要么需要求助于 Marker 接口(我不想这样做,这是引入 Unobtrusive 模式的一个很好的理由),要么提出所有命令都必须驻留在 *.Commands 中的约定。 * 我也不喜欢的命名空间。

所以问题是如何使包注册它自己的约定对主机不显眼和透明。

编辑

我可以想到的另一种解决方法是实现共享约定单例并将约定的注册委托给它。然后,该单例会记住所有约定,并且每次都将附加它们。不漂亮,但不比其他 2 个选项丑。

convention nservicebus unobtrusive

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

选择没有关联的记录

假设我有3个表:

People
-------------
PID   |  NAME
-------------
1       Bob
2       Garry
3       Alex
4       Peter
5       Victor

Tasks
-------------
TID   |  TASK
-------------
1       Work
2       Work Hard
3       Work Harder
Run Code Online (Sandbox Code Playgroud)

以及为人们分配任务的表格

Assigns
-------------
PID   |  TID
-------------
1       2
2       1
4       3
Run Code Online (Sandbox Code Playgroud)

问题:如何选择未分配任何任务的人员?

sql oracle

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

C#lambda简化

我有一个班级玩家,玩家有一个镜头列表.每个镜头都有自己的yPos(位置)因为玩家的yPos可以改变但是射击会保持他的位置:

class Player
{
    public string Id { set; get; }
    public int yPos { set; get; }
    public List<Shot> shots;

    public Player(string _Id, int _yPos)
    {
        Id = _Id;
        yPos = _yPos;
    }

}
class Shot
{
    public int yPos { set; get; }
    public Shot(int _yPos)
    {
        yPos = _yPos;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在游戏中的某个时刻有一个id,我需要找到玩家.并添加他的投篮列表与球员位置的新镜头.
这是我最终得到的:

string tempID = "xxx"; // not important where this temp id is coming from
players.Find(p => p.Id == tempID).shots.Add(new Shot(players.Find(p => p.Id == tempID).yPos)); …
Run Code Online (Sandbox Code Playgroud)

c# lambda

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