我的问题类似但不完全相同:
为什么我的主机(softsyshosting.com)不支持BeginRequest和EndRequest事件处理程序?(我也读过其中引用的mvolo博客)
目标是成功地在IHttpModule.Init事件(或模块内部的任何地方)中挂钩HttpApplication.BeginRequest,使用通过system.webServer配置集成的普通HttpModule,即不会:
覆盖HttpApplication(该模块旨在自包含和可重用,所以例如我有这样的配置):
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<remove name="TheHttpModule" />
<add name="TheHttpModule" type="Company.HttpModules.TheHttpModule" preCondition="managedHandler" />
Run Code Online (Sandbox Code Playgroud)到目前为止,我试图将一个监听器附加到HttpApplication.BeginRequest的任何策略都会产生以下两种情况之一:症状1是BeginRequest永远不会触发,或者症状2是所有托管请求都抛出以下异常,我不能从用户代码中捕获并处理它:
Stack Trace:
[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.PipelineModuleStepContainer.GetEventCount(RequestNotification notification, Boolean isPostEvent) +30
System.Web.PipelineStepManager.ResumeSteps(Exception error) +1112
System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb) +113
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +616
Run Code Online (Sandbox Code Playgroud)
app.BeginRequest += new EventHandler(this.OnBeginRequest)在Init中注释会停止例外.Init根本不引用Context或Request对象.
我试过了:
有人知道一个好方法吗?在模块中挂钩Application_Start是否存在一些间接策略(似乎不太可能)?另一个事件:a)可以从模块的构造函数或Init方法挂钩,以及b)随后是附加BeginRequest事件处理程序的安全位置?
非常感谢
我正在构建一个压力测试客户端,它使用尽可能多的线程来锤击服务器并分析响应,因为客户端可以集合.我经常发现自己受到垃圾收集(和/或缺乏收集)的限制,并且在大多数情况下,它归结为我实例化的字符串,只是将它们传递给Regex或Xml解析例程.
如果您对Regex类进行反编译,您将在内部看到它使用StringBuilders来执行几乎所有操作,但是您不能将它传递给字符串构建器; 在开始使用私有方法之前,它有助于深入研究私有方法,因此扩展方法也不会解决它.如果您想从System.Xml.Linq中的解析器中获取对象图,则处于类似情况.
这不是一个迂腐过度优化的案例.我查看了StringBuilder问题和其他问题中的正则表达式替换.我还介绍了我的应用程序,看看天花板的来源,Regex.Replace()现在使用确实在方法链中引入了大量开销,我试图以每小时数百万的请求命中服务器,并检查XML响应中的错误和嵌入式诊断代码.我已经摆脱了限制吞吐量的所有其他低效率,并且当我不需要捕获组或反向引用时,我甚至通过扩展StringBuilder来进行通配符查找/替换,从而减少了大量的Regex开销.但在我看来,现在有人会把自定义的StringBuilder(或更好的,基于Stream)的Regex和Xml解析实用程序包起来.
好吧,如此咆哮,但我自己必须这样做吗?
更新:我找到了一个解决方法,将峰值内存消耗从几千兆字节降低到几百兆,所以我将其发布在下面.我不是把它作为答案添加因为a)我一般不喜欢这样做,而且b)我仍然想知道是否有人花时间定制StringBuilder来做Regexes(反之亦然).
在我的情况下,我无法使用XmlReader,因为我正在摄取的流包含某些元素中的一些无效二进制内容.为了解析XML,我必须清空这些元素.我以前使用单个静态编译的Regex实例进行替换,这就像疯了一样消耗内存(我正在尝试处理~300个10KB docs/sec).大幅减少消费的变化是:
IndexOf方法.WildcardReplace方法,每次调用允许一个通配符(*或?) WildcardReplace()调用来替换正则表达式的用法,以清空有问题的元素的内容这是非常不合适的,仅在我自己的目的要求下进行测试; 我会让它更优雅和强大,但YAGNI和所有这一切,我很匆忙.这是代码:
/// <summary>
/// Performs basic wildcard find and replace on a string builder, observing one of two
/// wildcard characters: * matches any number of characters, or ? matches a single character.
/// Operates on only one wildcard per invocation; 2 …Run Code Online (Sandbox Code Playgroud) 我需要计算来自SqlBulkCopy的顺序超时异常.为了测试这一点,我使用外部应用程序启动事务并锁定目标表.
只有在第一次调用时,SqlBulkCopy会在预期时抛出超时异常.我们尝试过使用外部连接和事务,以及使用连接字符串和内部事务.使用外部连接和事务,无限等待从未打开连接或开始或提交事务,但总是在.WriteToServer().
是否有一些方法SqlBulkCopy.WriteToServer()可以在达到.BulkCopyTimeout极限时可靠地抛出超时异常?
public void BulkCopy(string connectionString, DataTable table, int bulkTimeout)
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(
connectionString,
SqlBulkCopyOptions.UseInternalTransaction))
{
bulkCopy.BulkCopyTimeout = bulkTimeout;//e.g. 120 sec.
//... fill with data, map columns...
bulkCopy.WriteToServer(table);
// ^^^^ waits indefinitely, doesn't throw until *after*
// the lock is released.
}
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢让异常冒泡而不是在using块的范围内处理它们,但我总是可以重新抛出.非常感谢任何见解.
更新1:
仍然没有决议.虽然发现了有趣的行为 - 正常的SqlCommand会在同一个锁中抛出一个TimeoutException,导致SqlBulkCopy.WriteToServer方法无限期挂起.
以下是我们尝试过的方法 - 这些方法都失败了 - 让SqlBulkCopy.WriteToServer在预期时始终如一地抛出超时:
现在,作为一种解决方法,我交替使用a)将WriteToServer调用放在异步包装器中,以便我自己计时,b)只调用WriteToServer一次; 超时后,等到常规SqlCommand 成功再次尝试WriteToServer之前.使用这些方法,我至少能够控制执行流程.
就在我以为我得到了git checkout -b newbranch - commit/commit/commit - git checkout master - git merge newbranch - git rebase -i master - git push工作流在git中,某些东西爆炸了,我看不出任何理由.
这是一般工作流程,过去对我有用:
# make sure I'm up to date on master:
$ git checkout master
$ git pull # k, no conflicts
# start my new feature
$ git checkout -b FEATURE9 # master @ 2f93e34
Switched to a new branch 'FEATURE9'
Run Code Online (Sandbox Code Playgroud)
...工作,提交,工作,提交,工作,承诺......
$ git commit -a
$ git checkout master
$ git merge FEATURE9
$ git …Run Code Online (Sandbox Code Playgroud) 我正在寻找充满活力,可获得(或获得)技术问题的具体示例,尤其是初创公司,他们选择在Microsoft堆栈上构建并成功或看起来可能.
Writely是一个明显的例子,NewsGator,PageFlakes和StackOverflow本身也是如此.
我并不是说这是一场语言辩论.我希望这个问题对SO来说不是太主观; 我和我合作的团队从这里可以找到的编码窘境解决方案中获益匪浅,而且我希望能够最好地回答这个问题的人经常访问这个网站.
为了使问题更加具体,让我们假设您是一名.NET专家,并且是处于转折点的初创公司的成员.这个转折点可能会也可能不会涉及平台的转变.避免主观论点,可以量化的例子 - 公司或案例研究 - 你能否指向支持继续使用.NET?(山谷中的例子除外.)
对于所有关于SO的"独特组合"和"笛卡尔产品"问题,我确信这个问题有一个名称和规范解决方案,但我并没有提出来.
更新......这是一个可能更好的例子:假设一个俱乐部有定期的抽奖活动.每个活动抽奖很多项目,会员每个项目购买门票.在抽奖的夜晚,抽奖经理打印出批量的名片,批次A,B,C等.当每件物品都被抽出时,他会将这些预先组装好的批次中的一个扔进料斗,混合起来,然后画一个名字.在赠送奖品之后,该名称将重新进入批次,如果任何其他项目恰好具有相同批次的参赛者,则重复使用该批次.问题:是否有无状态算法可以组装成批的名片,打印最少的卡片总数?[如果没有,Chris Shain的HashSet <>示例是我所知道的最有效的有状态替代方案.]
原始问题和示例:考虑以下人员,三明治和过敏症列表(存储关系;这些数据结构只是为了保持帖子简短,并不是问题或解决方案的固有内容):
var people = { "Pete", "Barb", "Debbie", "Frank", "Ralph", "Sally" };
var sandwiches = { "Peanut Butter", "Egg Salad", "Tuna Salad", "Oven Roasted Chicken", "Gluten-free Twigs" };
var allergies = {
{ "Pete", null },
{ "Barb", { "Peanut Butter" } },
{ "Debbie", { "Peanut Butter", "Egg Salad", "Tuna Salad" } },
{ "Frank", { "Egg Salad", "Tuna Salad" } },
{ "Ralph", { "Oven Roasted Chicken" } },
{ "Sally", { …Run Code Online (Sandbox Code Playgroud) 我使用 Dynamic LINQ 库中的 Dynamic.ParseLambda 方法来创建表达式,将每个表达式编译为 Func<>,并将每个表达式缓存在字典中:
// parse some dynamic expression using this ParseLambda sig:
Expression<Func<TArgument,TResult>> funcExpr =
System.Linq.Dynamic.ParseLambda<TArgument, TResult>(
expressionString, // string for dyn lambda expression
parameters); // object[] params
// then compile & cache the output of this as a delegate:
Func<TArgument,TResult> func = funcExpr.Compile(); //<-cache this
// then to execute, use:
return func(entityInstance);
Run Code Online (Sandbox Code Playgroud)
问题是,这迫使我为每个不同的参数值集缓存不同的委托实例。这看起来有点浪费;Dynamic LINQ 的所有开销都在解析和编译中;一旦创建,委托的性能就接近于直接编码的 lambda。有没有什么方法可以将参数移到表达式之外,以便我可以在调用它时(而不是在创建它时)将不同的值传递给公共缓存委托?
// e.g. with params...
return func(entityInstance,parameters);
// or if params are the issue, multiple signatures are ok:
return …Run Code Online (Sandbox Code Playgroud) Google对此的结果似乎需要比我所熟悉的更高级的数学(而且我可能不比五年级学生更聪明,但我无意找出答案)。
我正在寻找一种解决多元优化问题的通用方法,最好是在c#中,而不必深入研究矩阵和特征向量以及正态分布。
说我有数字变量X,Ÿ,ž,和w ^,和功能˚F这样w = f(x, y, z)。我想最大化w,然后...
f 未知x,y和/或z,如果有,是未知的x,y然后按需z重新采样ww与最少试验排列x,y,和z,和每一轮抽样之后选择用于每个的下一个值我对自变量有一个大概的最小和最大界限。我当然不想采样超出必要的排列空间。我喜欢的算法以具有至少为检测最突出的共同的依赖关系,例如一个粗的能力,收益递减时x> 2y,或在实际的劣化w的当总和x,y和z超过一定天花板等
我看过的大多数数学库都假设我知道如何在Boigenfoodle Continuum上执行量子nergenflip投影,而我只是不在那里。一个非数学家的编码器将如何做到这一点?
我已将文本从 pdf 文件复制到 Excel(2010)。我使用“文本到列”来创建单独的列。
现在我已经完成了这部分任务,我想将另一段文本粘贴到同一个文件中。
但现在 Excel 直接使用我用来分割这个新文本的文本到列,我现在(显然)不想分割它。我尝试将文本粘贴到新工作表上。我尝试将这段文本粘贴到新的工作簿中,但文本仍然被excel直接分割。
我尝试粘贴为文本,并尝试粘贴为 Unicode 文本。但到目前为止,我还没有找到解决这个问题的方法。如何让 Excel“忘记”它已将文本拆分为列?
我已经看到了解决这个问题部分的其他问题,但我没有看到完成整个问题的解决方案.当然,在命令处理器中没有"while"这样的东西,并且因为goto:line语句突破了所有循环,所以在继续下一个值之前,它不是在特定持续时间内迭代某些值集的选项.
这是我正在寻找的逻辑流程的伪代码; 命令处理器阻止了我到目前为止运行它的尝试.你将如何构建这个(除了抛弃批处理脚本并转到c#或其他东西)?
伪代码:
SET %%durationMinutes=60
FOR %%X IN (10 20 40 80 160 200 0) DO (
:: calculate elapsed minutes...
WHILE %elapsedMinutes < %%durationMinutes DO (
:: unrelated hocus pocus here, uses %%X as a variable
call :foo %%X
// can't use goto to simulate the WHILE loop since it breaks %%X, so...?
)
)
Run Code Online (Sandbox Code Playgroud) 这是令人费解的.为简单起见,想象一下具有.Employees可枚举属性的Company实体.我已经在其他地方看到,使EditorTemplates能够合理地呈现可枚举的技巧是使用这样的语法:
在Index.cshtml中:
@Html.EditorFor(company => company.Employees, "EmployeeEditorTemplate")
Run Code Online (Sandbox Code Playgroud)
EmployeeEditorTemplate.cshtml需要一名员工:
@model MyNamespace.Models.Employee
//...
@Html.EditorFor(x => x.FullName)
// ...etc.
Run Code Online (Sandbox Code Playgroud)
像这样的帖子:Viewmodels列表在行动中是空的 ...表明模型绑定器足够聪明,可以找出绑定并动态索引可枚举.我得到了不同的结果(正如我所期望的那样,如果模型绑定器不应该是如此mageriffic):
The model item passed into the dictionary is of type
System.Collections.Generic.List`1[MyNamespace.Models.Employee]',
but this dictionary requires a model item of type
'MyNamespace.Models.Employee'.
Run Code Online (Sandbox Code Playgroud)
自己枚举它会使集合很好,但是为每一行的控件发出相同的id(当然,这不是最佳的,但它告诉我EditorTemplate在功能上是正确的):
@foreach (var item in Model.Employees)
{
@Html.EditorFor(x => item, "EmployeeEditorTemplate")
}
Run Code Online (Sandbox Code Playgroud)
此构造也无法发布company.Employees集合回到我的其他控制器操作.
有关实现以下目标所需要的任何想法?
我不在乎我是否必须自己列举它,也不管它是在EditorTemplate内部还是外部; 我刚刚看到它说这是不必要的,如果你让它处理事情,MVC会更好.谢谢.
采用这种情况:您在C#中绑定了一些标记枚举(并且实际上是从SQL Server中的Enum-ish表生成).假设您是经销商,并允许您的经销商指定他们发货的美国州.作为一名出色而优雅的软件工程师,您将这些作为可按位组合的标志值实现以节省存储:
create table USState (
StateID bigint, StateAbbr char(2), StateName varchar(50))
/* insert all US States + DC into USState, StateIDs must be in powers of two */
/* StateID 0 reserved for 'None': */
create procedure GetStatesByFlag (@StateFlags bigint) as
declare @StateIDs table
(
StateID bigint,
primary key (StateID)
)
insert into @StateIDs
select StateID
from USState
where @StateFlags & StateID != 0
or (@StateFlags = 0 and StateID = 0)
select s.StateID, s.StateAbbr, s.StateName
from
USState s …Run Code Online (Sandbox Code Playgroud) c# ×7
.net ×2
algorithm ×1
asp.net-mvc ×1
batch-file ×1
combinations ×1
distinct ×1
dynamic ×1
excel ×1
excel-2010 ×1
flags ×1
for-loop ×1
git ×1
git-branch ×1
httpmodule ×1
iis-7 ×1
linq ×1
loops ×1
many-to-many ×1
optimization ×1
pasting ×1
razor ×1
regex ×1
sql ×1
sqlbulkcopy ×1
text ×1
timeout ×1
windows ×1