也许我在做错事或在这里表达纯粹的无知,但我真的不知道Nuget包是如何有益的?我最近决定安装一些Nuget包来替换我的应用程序中的静态DLL.当我检查由包创建的文件夹时,它们似乎包含许多不同版本的DLL,它们都嵌套在子目录数组下.
难道不是所有这些文件(其中许多似乎是冗余的)会增加应用程序的整体大小并减慢发布和部署例程吗?还应将哪些项目放入源代码管理中?
就像我说的那样,我可能会在这里遗漏一些东西,但任何人都可以了解Nuget包的优点吗?我开始认为bin文件夹中的一个简单的DLL工作得很好吗?
我正在尝试使用以下代码在Chrome扩展程序中设置和获取名称值对.
if (!this.Chrome_getValue || (this.Chrome_getValue.toString && this.Chrome_getValue.toString().indexOf("not supported") > -1)) {
this.Chrome_getValue = function (key, def) {
chrome.storage.local.get(key, function (result) {
return result[key];
});
};
this.Chrome_setValue = function (key, value) {
var obj = {};
obj[key] = value;
return chrome.storage.local.set(obj)
}
}
Run Code Online (Sandbox Code Playgroud)
然后我按如下方式调用它们:
Chrome_setValue("City", "London");
var keyValue = Chrome_getValue("City");
Run Code Online (Sandbox Code Playgroud)
问题是keyValue总是"未定义",即使我在尝试回读该值时放置了1秒的延迟.我理解这是因为'chrome.storage.local.get'函数是异步的..以下代码工作正常.
Chrome_setValue("City", "London");
chrome.storage.local.get("City", function (result) {
alert(result["City"]);
});
Run Code Online (Sandbox Code Playgroud)
有什么办法绑定keyValue(使用get)我可以强制代码等待函数返回响应?或许我正在从错误的角度接近这个.基本上我正在寻找一种方法,我可以抽象出在chrome.storage框架内处理数据的方法set和get方法?理想情况下,我可以调用两个简单的函数来设置和检索名称值对.
在我使用localStorage之前,这非常简单.
//Set
localStorage["City"] = "London";
//Get
var keyValue = localStorage["City"];
Run Code Online (Sandbox Code Playgroud) 我们已经与PayPal进行了5年的简单付款集成,直到今天仍然没有问题.在IPN URL(notify_url)中,我们在查询字符串中传递3个值,例如
https://www.example.com/callback/ipn?pspId=A&secCode=MnBP%2fxOwbQhXLd%2arD5xd6g%3d%3d&isPur=false
Run Code Online (Sandbox Code Playgroud)
从今天开始,PayPal会删除最后2个值并仅使用第一个查询字符串值进行调用,例如
https://www.example.com/callback/ipn?pspId=A
Run Code Online (Sandbox Code Playgroud)
我们使用该secCode值作为我们在回调上验证的签名,以防止对表单进行任何修改.为什么PayPal会突然开始从查询字符串中删除值?我怀疑他们应该在POST,但我不知道为什么突然改变?
我最近开始将.NET应用程序迁移到Windows Azure云服务.我们的应用程序严重依赖于许多COM类组件,其中包括AspPDF(用于PDF生成和操作)和AspJPEG(用于图像重新调整大小).在典型的非云IIS设置中,我只会在我们的生产服务器上注册DLL(使用regsvr32),一切都会好的!
在Azure中,这个过程略有不同,我将回答我自己的问题,以帮助那些面临类似挑战的人.此方法可用于需要在部署过程中在服务器上注册的任何dll.
我使用Amazon S3将我的客户端文档存档在一个存储桶和一系列文件夹中,以区分每个客户端.
MyBucket/0000001/..
MyBucket/0000002/..
MyBucket/0000003/..
Run Code Online (Sandbox Code Playgroud)
我的客户现在正在寻找一种将文件独立备份到本地计算机的方法.我想在给定的文件夹级别创建一组权限,以便仅在特定文件夹中查看/下载这些文件.
我希望在我的应用程序范围之外执行此操作,我的意思是,我想在S3浏览器中创建一组权限并告诉我的客户使用某些第三方应用程序链接到他们的区域.有人知道这是否可行?我反对编写一个模块来实现目前的自动化,因为它们的需求并不是很大.
在Visual Studio 2012中,我在服务器资源管理器中配置了两个数据库连接.一个用于SQL Server 2008 R2数据库,另一个用于SQL Server 2012数据库.通过右键单击表并选择"显示表数据",我始终能够使用SQL 2008数据库对数据进行快速内联编辑.

然后我可以弹出SQL窗格并查询数据,将光标直接放在字段中并编辑结果集中的数据.在不需要脚本的情况下快速编辑数据时,我非常依赖这种方法.

似乎此选项不适用于SQL Server 2012连接.当我尝试做同样的事情时,它似乎在SQL Server数据库工具(SSDT)的上下文中打开.我将看到1000条记录的初始结果集,但与SQL 2008不同,通过选择和覆盖结果集中的值,无法通过简单的方式运行更精确的SELECT查询和内联编辑数据.下面的屏幕截图是我可以通过直接打开新查询窗口获得的最接近的屏幕截图,但仍无法内联编辑结果.

是否有可能使2012数据库的行为与Visual Studio中的2008数据库相似?我是否错过了SQL 2012安装中阻止此行为的组件?或者微软是否将这些功能拉走了?我非常希望得到内联编辑,我不想写UPDATE查询来纠正单行数据,它更慢而且风险更大......如果一个子句无意中错过了它可能最终破坏大量数据?
任何想法将不胜感激.
sql-server ide sql-server-2012 visual-studio-2012 sql-server-data-tools
我在.NET Web应用程序中有一个例程,允许我们平台上的用户清除他们的帐户(即删除他们的所有数据).此例程在存储过程中运行,并基本上遍历相关数据表并清除它们创建的所有各种项目.
存储过程看起来像这样.
ALTER procedure [dbo].[spDeleteAccountData](
@accountNumber varchar(30) )
AS
BEGIN
SET ANSI_NULLS ON ;
SET NOCOUNT ON;
BEGIN TRAN
BEGIN TRY
DELETE FROM myDataTable1 WHERE accountNumber = @accountNumber
DELETE FROM myDataTable2 WHERE accountNumber = @accountNumber
DELETE FROM myDataTable3 WHERE accountNumber = @accountNumber
//Etc.........
END TRY
BEGIN CATCH
//CATCH ERROR
END CATCH
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
SET ANSI_NULLS OFF;
SET NOCOUNT OFF;
END
Run Code Online (Sandbox Code Playgroud)
问题是,在某些情况下,我们可以在一张桌子上拥有超过10,000行,并且该过程最多可能需要3-5分钟.在此期间,数据库上的所有其他连接都会受到限制,导致如下所示的超时错误:
System.Data.SqlClient.SqlException(0x80131904):超时已过期.操作完成之前经过的超时时间或服务器没有响应.
我是否可以对提高性能进行一般性更改?我很欣赏有许多与我们的数据库模式设计有关的未知数,但欢迎一般的最佳实践建议!我考虑过将这项任务安排在凌晨运行,以尽量减少影响,但这远非理想,因为在完成此任务之前,用户将无法重新获得对其帐户的访问权限.
附加信息:
编辑:格林尼治标准时间16:52
删除过程会影响大约20个表.最大的一个有大约500万条记录.其他人不再有200,000,其中一些仅包含1000-2000条记录.
sql sql-server performance stored-procedures sql-server-2008-r2
我已经实现了以下代码,用于在写入Azure数据库时使用指数退避处理INSERT/UPDATE重试逻辑.
static SqlConnection TryOpen(this SqlConnection connection)
{
int attempts = 0;
while (attempts < 5)
{
try
{
if (attempts > 0)
System.Threading.Thread.Sleep(((int)Math.Pow(3, attempts)) * 1000);
connection.Open();
return connection;
}
catch { }
attempts++;
}
throw new Exception("Unable to obtain a connection to SQL Server or SQL Azure.");
}
Run Code Online (Sandbox Code Playgroud)
但是,我是否应该考虑为我的数据库读取应用重试逻辑?或者SqlCommand.CommandTimeout()方法是否足够?我的大多数读取都是使用以下代码创建的:
Dim myDateAdapter As New SqlDataAdapter(mySqlCommand)
Dim ds As New DataSet
myDateAdapter.Fill(ds, "dtName")
Run Code Online (Sandbox Code Playgroud)
很难知道在Azure的生产环境中会发生什么样的瞬态错误,所以我现在尝试尽可能多地进行缓解.
我使用以下代码将数据从服务器异步拉入客户端.错误块中的警报报告服务器上发生的错误.但是,如果用户在呼叫期间离开页面页面,则此块也会被触发并抛出一个空的警报容器.有没有办法处理用户更优雅地离开页面(即不要在他们离开前抛出空警报)?也许通过区分用户已导航的错误块,而不是在服务器上发生错误?
$.ajax({
type: "GET",
url: "/handlers/myHandler.ashx",
async: true,
dataType: "json",
data: "var1=test_val&var2=test_val"
success: function (invoices) {
//Success block
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud) 我的应用程序目前使用与Dropbox API的集成.其目的是允许客户端将某些文档放入目录中的专用文件夹,Apps/My_App_Name/然后我的应用程序定期轮询该文件夹以查看是否添加了任何内容,如果找到文档,它将自动将其移动到客户端的文档管理中我申请中的区域.
目前有大约300名用户(并且还在计算),他们的Dropbox帐户以这种方式与我同步.我相信我在做一些非常低效的事情,但基本上我的应用程序会轮询所有300个帐户以查看是否已添加文件.这种情况每10分钟发生一次,但我不得不扩大此间隔,因为添加了更多帐户以防止重叠.每次我查看所有帐户时,通常我会发现300个拥有新文档的人中只有1个或2个.
因此我的问题是..只有当客户端将文件添加到该Dropbox文件夹时,Dropbox API中是否有方法发布Web挂钩或某种通知?然后,这可以触发我的应用程序仅轮询该帐户并在我身边保存一大堆资源.
附加信息:
.net ×2
azure ×2
jquery ×2
sql ×2
sql-server ×2
amazon-s3 ×1
asynchronous ×1
comclass ×1
dll ×1
dropbox ×1
dropbox-api ×1
ide ×1
javascript ×1
nuget ×1
package ×1
paypal ×1
paypal-ipn ×1
performance ×1
regsvr32 ×1
webhooks ×1