小编Ale*_*lex的帖子

一个特定服务器上的"不明确的列名称"错误

此简单查询仅在一个db-server上抛出"不明确的列名称TaskID"错误.这是荒唐的.我们在不同的服务器和不同版本的SQL Server(2005/2008)上使用相同的数据库结构对此进行了测试,并且只有这个特定客户端的服务器才会抛出错误.我其实很沮丧.

SELECT Tasks.TaskID
FROM Tasks
INNER JOIN TaskHelpers ON TaskHelpers.TaskID = Tasks.TaskID
ORDER BY TaskID
Run Code Online (Sandbox Code Playgroud)

是的,我知道我可以Tasks.TaskID加入order by条款,但由于某些原因我不能.

sql sql-server

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

处理没有Global.asax的应用程序范围的事件

由于各种原因,我的项目没有"global.asax",我无法改变它(它是一个组件).此外,我无法访问web.config,因此httpModule也不是一个选项.

有没有办法处理应用程序范围的事件,例如在这种情况下的"BeginRequest"?

我尝试了这个并没有用,有人可以解释原因吗?看起来像一个bug:

HttpContext.Current.ApplicationInstance.BeginRequest += MyStaticMethod;
Run Code Online (Sandbox Code Playgroud)

asp.net

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

来自AJAX的表单身份验证和POST请求

我们有一个受表单身份验证保护的ASP.NET应用程序 该应用程序大量使用MS AJAX来调用其Web服务.

当表单身份验证超时,并且GET -request发生时 - 一切都很好(用户被重定向到登录页面).

但是当表单身份验证超时并发生POST请求时(ajax) - 没有重定向发生,而应用程序返回"401 unathorized",浏览器提示输入用户名和密码(不是登录表单,而是浏览器内置对话框) ).当然输入任何用户名/密码永远不会有帮助.

我该如何处理?

更新:用firebug查看之后,我发现常规POST请求重定向到登录正常,只有网络服务调用才会抛出"401 Unauthorizes".常规请求和Web服务之间的区别是URL.对于常规的后请求,这是"page.aspx",对于webservices,是"service.asmx/MethodName"...

asp.net forms-authentication

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

构造大字符串(例如,对于SQL命令)C#编译器有多聪明?

这可能听起来很愚蠢,但......

当我创建大SQL命令时,我想保持我的代码可读,我这样做:

cmd.CommandText = "SELECT top 10 UserID, UserName " +
 "FROM Users " +
 "INNER JOIN SomeOtherTable ON xxxxx " +
 "WHERE UserID IN (blablabla)";
Run Code Online (Sandbox Code Playgroud)

看到连接?现在,为了保存性能,我现在这样做:

cmd.CommandText = @"SELECT top 10 UserID, UserName
     FROM Users
     INNER JOIN SomeOtherTable ON xxxxx
     WHERE UserID IN (blablabla)";
Run Code Online (Sandbox Code Playgroud)

它使代码可读,但保存了连接.现在它真的能保存任何性能,或者编译器是否足够智能"预连接"第一个字符串?

c# string-concatenation

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

TextMate - 自动添加结束HTML标记

有没有办法让TextMate在键入开头的时自动添加结束HTML标记?类似于Notepad ++在Windows/Linux或MS Visual Studio下的功能.

我的意思是没有任何捷径?所以我只需输入"<body>"并添加"</ body>"并将光标置于其间.没有任何"Ctrl + Shift + Option + Whatever"黑魔法.

或者TextMate替代品可能吗?

PS.Mac OS只是我工作的众多操作系统中的一个,所以我不想用任何快捷方式乱丢我的大脑......

textmate

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

Amazon S3高CPU使用率和100个PutObject调用(.NET)

我们使用Amazon S3存储多达500K的数据.我们在EC2实例上安装了一个.NET 4.0 Web服务,它使用500K数据调用PutObject.

问题是,当我们为这个服务分别向S3发出100多个同时调用(使用唯一的S3密钥),并且EC2实例CPU达到100%时.我们对Web服务进行了一些分析,结果表明,99%的处理时间是由AmazonS3Client.PutObject方法完成的.

我们已经尝试将S3客户端配置为使用HTTP(而不是默认的HTTPS),并且还使用S3密钥生成方案进行了一些操作,但没有任何帮助.这篇文章 亚马逊S3 PutObject很慢也没有帮助.

我们的S3密钥架构是:"111_ [递增ID] .txt"

如果我们使用较短的数据(例如小于1K),则不会发生这种广泛的CPU使用.

您能否为我们提供一些指导,以提高CPU性能或在哪里寻找?

这是该调用的源代码:

string fileName = "111_" + Id + ".txt";
using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(RegionEndpoint.XXXX))
        {
            try
            {
PutObjectRequest request = new PutObjectRequest();
request.WithContentBody(dataRequest.Base64Data)
                 .WithBucketName(bucketName)
                 .WithKey(fileName);

S3Response response = client.PutObject(request);
response.Dispose();
            }
            catch (AmazonS3Exception amazonS3Exception)
            {
              //Handle exceptiom...
            }
        }
Run Code Online (Sandbox Code Playgroud)

谢谢!

.net amazon-s3 amazon-web-services aws-sdk aws-sdk-net

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

使用异步时 SqlClient 连接池已满

我有一个使用 SQL Server 的繁忙 ASP.NET 5 Core 应用程序(每秒数千个请求)。最近,我们决定尝试将一些热代码路径切换为async数据库访问,但是......应用程序甚至没有启动。我收到此错误:

从池中获取连接之前超时时间已过。发生这种情况的原因可能是所有池连接都在使用中并且已达到最大池大小。

我看到线程池中的线程数量增长到 40...50...100...

我们使用的代码模式非常简单:

using (var cn = new SqlConnection(connenctionStrng))
{
    cn.Open();
    var data = await cn.QueryAsync("SELECT x FROM Stuff WHERE id=@id"); //QueryAsync is from Dapper
}
Run Code Online (Sandbox Code Playgroud)

我做了一个进程转储,所有线程都在线上cn.Open(),只是坐在那里等待。

这主要发生在 IIS 上的应用程序“回收”期间,即应用程序进程重新启动并且 HTTP 请求从一个进程排队到另一个进程时。导致队列中有数万个请求需要处理。

嗯,是的,我明白了。我想我知道发生了什么事。async使应用程序更具规模。当数据库忙于响应我的查询时,控制权将返回给其他线程。它尝试并行打开越来越多的连接。连接池已满。但是为什么关闭的连接在工作完成后没有立即返回到池中呢?

async“传统”代码切换到“传统”代码可以立即解决问题。

我有什么选择?

  • 增加默认的最大池大小100?尝试过200,没有帮助。我应该尝试一下吗10000
  • 使用OpenAsync而不是Open? 没有帮助。
  • 我以为我遇到了这个问题https://github.com/dotnet/SqlClient/issues/18但不,我使用的是较新版本SqlClient,据说已修复。据说。
  • async根本不与数据库访问一起使用?呃……
  • async当像这个答案建议的那样使用时,我们真的必须想出我们自己的节流机制吗?我很惊讶没有内置的解决方法......

PS 仔细查看进程转储 …

asynchronous sqlclient async-await .net-core

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

获取当前鼠标光标类型

如何获取当前的GLOBAL鼠标光标类型(沙漏/箭头/ ..)?在Windows中.

全球 - 我需要它,即使鼠标是我的应用程序的外部,或者即使我的程序是windlowless.

在C#,Delphi或纯winapi,没关系......

非常感谢你提前!!

c# delphi vb6 winapi

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

在脱机计算机上安装ClickOnce应用程序

我们在我们的网站上有一个ClickOnce发布的应用程序.

我们的一些客户拥有他们想要安装软件的离线计算机(未连接到Internet).什么是解决方案?


PS该软件有很多客户,并且是公开的,所以我想我正在寻找一种解决方案,最好不要为"离线"客户创建自定义构建(实际上是我们的宏录制器).此外,大多数客户都拥有旧版本的Windows,它没有".application"文件扩展名的文件关联.但我想这可以通过运行引导程序"setup.exe"来修复,对吧?

.net deployment clickonce

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

C#中的多重继承 - 再次

我知道C#不提供多重继承.我知道有一些像这样的解决方法.

但这是我今天面临的一个问题,无法找出任何优雅的解决方法.我将添加一些抽象的代码示例,以便您更快地获得它...

(让它成为现实生活中的ASP.NET代码 - 导致那些"A类,B类"代码样本真的令人困惑):

public class AdminPage : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e)
    {
        //if not an admin - get out
        if(!CurrentUserIsAdmin()) Response.End();

        base.OnInit (e);
    }
}

public class JQueryPage : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e)
    {
        RegisterJQueryScript();
        base.OnLoad (e);
    }
}

//now here's what I REALLY miss in C#
public class AdminJQueryPage : AdminPage, JQueryPage;
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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