小编Mar*_*tin的帖子

在ASP.Net MVC中禁用每个请求的会话状态

我在ASP.Net MVC中创建一个ActionResult来提供图像.启用会话状态后,IIS将一次只处理来自同一用户的一个请求.(这不仅适用于MVC.)

因此,在具有多个图像回调此Action的页面上,一次只能处理一个图像请求.这是同步的.

我希望这个图像Action是异步的 - 我希望每次执行多个图像请求而不需要前一个完成.(如果图像只是静态文件,IIS会以这种方式为它们提供服务.)

所以,我想禁用Session仅用于对该Action的调用,或者指定某些请求没有Session状态.任何人都知道如何在MVC中完成这项工作?谢谢!

asp.net asp.net-mvc asynchronous session-state actionresult

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

使用XSD验证XML时忽略提供的命名空间

背景:

我们正在构建一个应用程序,允许我们的客户以预定义(即我们无法控制)的XML格式提供数据.XSD由第三方提供给我们,我们期望在我们处理它之前收到一个传递模式验证的XML文件.

问题:

我们提供的XSD包括默认和目标命名空间,这意味着如果客户提供的XML文件不包含命名空间,则验证将通过.我们显然不希望他们提供说他们通过但不应该提供的东西,但更大的问题是如果我找不到解决办法,我们需要对每个元素进行额外的检查. XML验证.

问题:

是否可以强制.NET执行验证并忽略提供的XML和XSD上的命名空间.即以某种方式"假设"命名空间被附加.

  1. 是否可以轻松,可靠地删除内存中的命名空间?
  2. 在这些情况下,最佳做法是什么?

我到目前为止的解决方案:

  1. 每次更新时都会从XSD中删除命名空间(不应该经常使用.这不会解决这样一个事实,即如果它们提供命名空间,它仍将通过验证.
  2. 从XSD中删除命名空间,并找到一种方法从每次从传入的XML中剥离命名空间.这似乎是很多代码来执行简单的操作.
  3. 在验证之前对XML文件进行一些预先限定以确保它具有正确的命名空间.如果文件的内容正确,则由于名称空间无效而使它们失败似乎是错误的.
  4. 创建一个没有命名空间的重复XSD,但是如果它们只提供错误的命名空间或不同的命名空间,那么它仍然会通过.

示例Xml:

<?xml version="1.0"?>
<xsd:schema version='3.09' elementFormDefault='qualified' attributeFormDefault='unqualified' id='blah' targetNamespace='urn:schemas-blah.com:blahExample' xmlns='urn:blah:blahExample' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
...
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

与命名空间不同

 <?xml version="1.0" encoding="UTF-8" ?> 
<root xmlns="urn:myCompany.com:blahExample1" attr1="2001-03-03" attr2="google" >
...
</root>
Run Code Online (Sandbox Code Playgroud)

没有命名空间.

 <?xml version="1.0" encoding="UTF-8" ?> 
<root attr1="2001-03-03" attr2="google" >
...
</root>
Run Code Online (Sandbox Code Playgroud)

c# xml xsd-validation

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

Postgres窗口函数和异常分组

我正在尝试将一个查询放在一起,该查询将在一段时间内检索用户的统计信息(利润/损失)作为累积结果.

这是我到目前为止的查询:

SELECT p.name, e.date, 
    sum(sp.payout) OVER (ORDER BY e.date)
    - sum(s.buyin) OVER (ORDER BY e.date) AS "Profit/Loss" 
FROM result r 
    JOIN game g ON r.game_id = g.game_id 
    JOIN event e ON g.event_id = e.event_id 
    JOIN structure s ON g.structure_id = s.structure_id 
    JOIN structure_payout sp ON g.structure_id = sp.structure_id
                            AND r.position = sp.position 
    JOIN player p ON r.player_id = p.player_id 
WHERE p.player_id = 17 
GROUP BY p.name, e.date, e.event_id, sp.payout, s.buyin
ORDER BY p.name, e.date ASC
Run Code Online (Sandbox Code Playgroud)

查询将运行.但是,结果略有不正确.原因是一个人event可以有多个游戏(有不同的sp.payouts …

sql postgresql aggregate-functions window-functions

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

此LINQ代码是否对原始数据执行多次查找?

我们在使用LINQ的代码段中遇到了轻微的性能问题,并且提出了一个关于LINQ如何在查找方面工作的问题

我的问题是这个(请注意我已经更改了所有代码,因此这是代码的指示性示例,而不是真实场景):

特定

public class Person {
 int ID;
 string Name;
 DateTime Birthday; 
 int OrganisationID;
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个说100k Person对象的列表,然后是一个日期列表,比如1000,我运行了这段代码:

var personBirthdays = from Person p in personList
    where p.OrganisationID = 123
    select p.Birthday;

foreach (DateTime d in dateList)
{
    if (personBirthdays.Contains(d))
        Console.WriteLine(string.Format("Date: {0} has a Birthday", d.ToShortDateString()));
}
Run Code Online (Sandbox Code Playgroud)

结果代码将是以下迭代:

100k(用于查找具有organisationID 123的用户需要完成的循环)
乘以
1000(列表中的日期数量)
乘以
x(具有要检查的组织ID 123的用户数量的日期) )

这是很多迭代!

如果我将personBirthdays的代码更改为:

List<DateTime> personBirthdays = 
        (from Person p in personList
        where p.OrganisationID = 123
        select p.Birthday).ToList();
Run Code Online (Sandbox Code Playgroud)

这应该删除100k作为倍数,并只执行一次?

所以你会有100k +(1000*x)而不是(100k*1000*x).

问题是,这似乎太容易了,我确信LINQ在某个地方做了一些聪明的事情应该意味着这不会发生.

如果没有人回答,我会进行一些测试并报告.

清晰度更新: 我们不考虑数据库查找,该personList …

c# linq linq-to-objects

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

nhibernate查询与非相关实体的复杂连接

所以我花了最后几个小时寻找答案,我似乎找不到任何有意义的东西.

public class Game
{
   public virtual Guid ID { get; set; }
   public virtual ResultStructure Structure { get; set; }
   public virtual List<Result> Results { get; set; }
}

public class Result
{
  public virtual Player Player { get; set; }
  public virtual int Position { get; set; }
}

public class ResultStructure
{
  public virtual Guid ID { get; set; }
  public virtual List<ResultOutcomes> Outcomes { get; set;}
}

public class ResultOutcomes
{
  public virtual int Position { …
Run Code Online (Sandbox Code Playgroud)

c# linq nhibernate queryover

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

ASP.NET启动性能分析Web

我正在尝试确定一个非常长的(imho)初始启动ASP.NET应用程序的原因.

该应用程序使用各种第三方库,并且我确信可以合并许多引用,但是,我正在尝试识别(并分配责任)dll以及它们对扩展启动过程的贡献.

到目前为止,启动时间从2-5分钟不等,具体取决于盒子上其他东西的使用情况.基于网站的复杂性,我认为这是不可接受的,我需要将其减少到最大30秒的范围内.

为了清楚我正在寻找的性能范围,它是从第一个请求到初始Application_Start方法被击中的时间.

那么我将从哪里开始获取有关加载哪些DLL的信息,以及加载所需的时间,以便我可以尝试将成本/收益放在一起,以便我们需要解决/整合.

从能力的角度来看,我一直在使用JetBrains dotTrace,我很清楚应用程序在应用程序之后如何对应用程序进行基准测试,但它看起来不在应用程序代码之内,因此在我目前知道.

我正在寻找的是如何在第一个入口点进入我的代码之前了解正在发生的事情的方法.

注意:我知道我可以在回收/升级上调用默认页面来进行初始加载,但我宁愿解决实际问题而不是通过它来解决问题.

注2:硬件在功能方面有足够的扩展和分离,因此我很确定这不是问题.

c# asp.net iis performance

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

在每个请求上生成ASP.NET包是否正确?

我们最近遇到了性能问题,突出了我需要确认的内容.

当您包含这样的包时:

@Scripts.Render("~/jquery)
Run Code Online (Sandbox Code Playgroud)

这似乎正在运行(使用dotTrace确定,并看到它正在运行):

Microsoft.Ajax.Utilities.MinifyJavascript()
Run Code Online (Sandbox Code Playgroud)

对于包含include的页面的每个请求,以及对脚本本身的调用.

我很欣赏在现实世界的场景中,只有1次点击脚本,因为客户端会缓存它.然而,至少可以说它似乎效率低下.

问题是,这是预期的行为,就好像它不是,我想解决它(所以任何建议),但如果是,我们可以预先缩小脚本.

UPDATE

因此,即使我将编译模式更改为debug,它仍然会触发minify方法.它输出各个网址,但仍然试图缩小它.

但是,如果删除对渲染方法的所有引用,它不会尝试缩小任何内容,并且不会快速运行,不会使应用程序池膨胀,也不会使Web服务器上的CPU最大化.

asp.net-mvc bundling-and-minification webgrease asp.net-bundling

6
推荐指数
0
解决办法
969
查看次数

使用SQL Server的网站的外部连接器许可证

在与Microsoft许可代表交谈时,我刚刚发现了一些非常奇怪的东西,我想让这个话题绕过社区,看看是否有人意识到这一点。

我问有关许可SQL Server / Windows Server的问题,这导致我被推荐为不使用Windows用户的网站的外部连接器许可。

我将其归结为以下基本情况:

服务器1:

运行IIS 7.5的Windows Server 2008 R2,使用自定义的面向公众的网站,该网站使用本地增长的身份验证机制(即,本地Windows用户或AD用户),其中用户(不确定或不经过身份验证)的数量不确定。

服务器2:

Windows Server 2008 R2,运行SQL Server 2008 R2。

服务器1上的网站使用经过SQL身份验证的登录名连接到服务器2上的SQL Server。

所需的许可是:服务器1的Windows Server许可服务器2的Windows Server许可SQL Server“每处理器”许可和服务器2的外部连接器许可。

这似乎很荒谬,因为它使Server 2的Windows许可证的成本增加了三倍。另外,就SQL Server而言,没有多个客户端连接,只有一个“设备”可以在顶部提供大量的“增值”仅来自SQL Server的数据。

我的问题是,有人遇到过吗?似乎这是错误的,因为我想这是大多数用于创建网站的.NET软件公司最常见的情况,并且经过数次的工作,我从未听说过!

我看过这个问题:

/sf/ask/215043111/

但是,它实际上没有关于场景等的足够信息,也没有引用任何适当的资源。

如果有人可以实际指向一个信誉良好的站点中有关此内容的部分,而不仅仅是指向通用“客户许可”页面的链接,我将不胜感激。

sql-server windows-server

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

我可以获取网站引用的所有程序集吗?

基本上,我想在我的MVC站点内的页面上打印一个列表,该列表显示应用程序使用的所有程序集以及版本信息.

我不想只在bin目录中包含那些,我想使用更准确的方法.

所以例子就是

我想知道bin目录中的哪个dll正在被使用.对于其中的每一个,我需要查看它们的依赖程序集(带有它们的版本信息).

我想知道哪些dll是从GAC等引用的.

我希望尽可能多地提供相关信息,因此有关组件所期望的版本以及应用程序所采用的信息将非常有用.

对此有任何标准方法吗?

谢谢,马丁

c# asp.net

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