小编Siy*_*ual的帖子

WebClient + HTTPS问题

我目前正在与第三方创建的系统集成.该系统要求我使用XML/HTTPS发送请求.第三方发给我证书,我安装了它

我使用以下代码:

using (WebClient client = new WebClient())
{
   client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");

   System.Text.ASCIIEncoding  encoding=new System.Text.ASCIIEncoding();
   var response = client.UploadData(address, "POST", encoding.GetBytes(msg));
}
Run Code Online (Sandbox Code Playgroud)

此代码返回以下内容WebException:

底层连接已关闭:无法为SSL/TLS安全通道建立信任关系.

更新因为它是我正在反对的测试服务器,证书不受信任且验证失败...要在测试/调试环境中绕过它,请创建一个新的ServerCertificateValidationCallback

ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(bypassAllCertificateStuff);
Run Code Online (Sandbox Code Playgroud)

这是我的"假"回调

private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
   return true;
}
Run Code Online (Sandbox Code Playgroud)

在这里这里阅读更多

c# https webclient

62
推荐指数
2
解决办法
4万
查看次数

自我赋值中的后增量

我理解它们之间的区别i++ and ++i,但我不太清楚为什么我得到以下结果:

static void Main(string[] args)
{
    int c = 42;
    c = c++;
    Console.WriteLine(c);   //Output: 42
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,因为这是将变量赋值给自己然后递增值,我希望结果是43.然而,它正在回归42.使用时也得到相同的结果c = c--;.

我意识到我可以简单地使用c++;并完成它,但我更好奇它为什么表现得如此.谁能解释一下这里发生了什么?

c# pre-increment post-increment

35
推荐指数
3
解决办法
3977
查看次数

如何将Redux与非常大的数据集和IndexedDB集成

我有一个使用同步API来获取其数据的应用程序,并且需要在本地存储所有数据.数据集本身非常大,我不愿意将它存储在内存中,因为它可以包含数千条记录.由于我不认为实际的数据结构是相关的,让我们假设我正在构建一个需要离线访问的电子邮件客户端,并且我希望我的存储机制是IndexedDB(它是异步的).

我知道一个简单的解决方案是不将数据结构作为我的状态对象的一部分,并且仅使用所需数据填充状态(例如,当触发EMAIL_OPEN操作时将电子邮件内容存储在状态中).这很简单,特别是对于redux-thunk.

但是,这意味着我需要妥协两件事:

  1. 用户数据不再是"应用程序状态"的一部分,尽管事实确实如此.由于同步行为很复杂,将其从app状态机中删除会损害redux概念的优雅(我理解它们的方式)
  2. 我非常喜欢redux架构,并希望我的所有逻辑都能通过它,而不仅仅是视图状态.

有关如何将redux与非内存状态属性一起使用的最佳实践吗?我发现最难解决的问题是redux依赖于同步API,因此我无法用异步状态对象替换我的状态对象(除非我完全删除redux并将其替换为我自己的异步实现和连接器).

我找不到使用谷歌的答案,但如果已经有很好的资源,我也很乐意指出.

更新:问题得到了回答,但想要更好地解释我是如何实现它的,以防有人遇到它:

主要思想是使用简单的redux reducer维护客户端和服务器的更改列表,并使用连接器监听这些更改列表以更新IDB,并使用客户端更改来更新服务器:

  1. 客户端进行更改时,使用reducers更新客户端更改列表.
  2. 当服务器发送更新时,使用reducers更新服务器更改列表.
  3. 连接器侦听存储,并在状态更改时更新IDB.还维护已修改的项目的内部列表.
  4. 更新服务器时,使用已修改项目列表从IDB中提取增量并发送到服务器.
  5. 访问数据时,使用正常操作从IDB中提取(例如使用redux-thunk)

这种方法唯一需要注意的是,由于真实状态存储在IDB中,因此我们确实失去了拥有一个状态对象的一些价值(并且更难以倒带/快进状态)

javascript redux

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

Try_Convert for SQL Server 2008 R2

我正在使用SQL Server 2008 R2并且有一个VARCHAR我想要转换为DECIMAL(28,10)使用的列CONVERT.但是其中许多行格式错误,因此无法将它们解析为数字.在这种情况下,我只想通过将结果设置为0或NULL来跳过这些.

我知道SQL Server 2012(TRY_CONVERT())中有一个新的语句会很方便.

这可能是在2008年还是我必须等到我们更新到下一个版本的SQL 2012?

编辑

不幸的ISNUMERIC()是,在这种情况下不可靠.我试过了

ISNUMERIC(myCol) = 1
Run Code Online (Sandbox Code Playgroud)

对于CONVERT无法转换为的行,返回true DECIMAL.

sql sql-server sql-server-2008 sql-server-2012

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

使用标识主键将新实体插入上下文

我想在我的SQL表中插入一条新记录.我试过了:

        public void CreateComment(int questionId, string comment)
        {
            QuestionComment questionComment = context.TableName.Create();//1*
            questionComment.propertyThatIsNotAConstraint= questionId;
            questionComment.body = comment;
            context.QuestionComments.Add(questionComment);
            context.SaveChanges();//ERROR...
        }
Run Code Online (Sandbox Code Playgroud)

1*我很惊讶地看到intellisense告诉我: "请注意,新实体未添加或附加到集合中"

错误读取:

"违反PRIMARY KEY约束'PK_TableName'.无法在对象'dbo.TableName'中插入重复键.重复键值为(0).\ r \n语句已终止."

问题是它questionComment有PK:questionComment.Id默认为0.它需要是下一个可用的标识,否则不会填充并执行"正常"标识插入.

实体框架如何期望我处理这个场景?

按照要求:

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

    namespace Feedback.Models …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework

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

这个查询背后的逻辑工作是什么?

我正在运行以下查询以获得员工表中的第三高薪并且它工作正常,但我无法理解其逻辑.子查询值如何与主查询匹配(左侧部分).有人可以解释一下这个查询背后的逻辑是什么吗?

select e1.salary 
from employee as e1 
where 3 = (select count(salary) 
           from employee as e2 
           where e1.salary<=e2.salary)
Run Code Online (Sandbox Code Playgroud)

PS:我可以理解count()返回的行数(所有记录都是唯一的).

sql sql-server

19
推荐指数
3
解决办法
1893
查看次数

不应该decltype触发器编译其参数?

所以我很困惑这是如何工作的.鉴于:

template <typename T>
int foo(T t) { t.foo(); }
Run Code Online (Sandbox Code Playgroud)

似乎这个调用应该失败:

decltype(foo(int{ 13 })) fail = 42;

cout << fail << endl;
Run Code Online (Sandbox Code Playgroud)

相反它只是打印:

42

它以我可访问的所有编译器的方式工作.这是正确的行为吗?我请求C++标准的引用.

c++ templates compilation decltype language-lawyer

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

如何计算SQL中数据的90th Percentile,SD,Mean

嗨,我有一个餐桌设施.每天持有一个分数(每天可以报告多个分数,两者都有效)

我需要按月计算得分的第90个百分点,标准差和平均值.

设施:

Id   Month Date  score
1    Jan     1    5
1    Jan     1    5
1    Jan     2    3
1    Jan     3    4
1    Jan     4    4
1    Jan     5    4
1    Feb     1    5
1    Feb     1    5
1    Feb     2    3
1    Feb     3    4
1    Feb     4    4
1    Feb     5    4
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

谢谢你的帮助.

sql sql-server sql-server-2012

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

使用SSIS包到Access DB的SQL Agent作业失败

我有一个运行脚本任务的SSIS包(主要是和其他一些东西).脚本任务使用OleDB连接连接到Access数据库.这是Microsoft Jet 4.0连接.我安装了驱动程序.但它不会通过代理帐户在SQL Agent中运行.它可以直接从Visual Studio和包存储中运行.事实上,当我以代理所附带的特殊帐户登录时,它在这两个地方都运行良好.但是,当我通过SQL Server代理运行时,我得到了可怕的"未指定错误"OleDbException.

脚本任务的相关代码:

// class field
private string accessConnectionStringTemplate = "Data Source=\"{0}\";Provider=Microsoft.Jet.OLEDB.4.0;";

// in method that connects to database
Print(file, "Connection string: " + string.Format(accessConnectionStringTemplate, file.FileName));
// outputs: Data Source = "\Path\To\File";Provider=Microsoft.Jet.OLEDB.4.0"
using(access = new OleDbConnection(string.Format(accessConnectionStringTemplate, file.FileName))) {
     access.Open();
     // other code
}
Run Code Online (Sandbox Code Playgroud)

通过SQL代理作业历史记录的错误消息:

Started:  12:35:10 PM
Error: 2016-11-03 12:35:33.51
   Code: 0x00000000
   Source: Import Files Main
   Description: Exception: Unspecified error
End Error
Error: 2016-11-03 12:35:33.51
   Code: 0x00000000
   Source: Import Files Main
   Description:    at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection …
Run Code Online (Sandbox Code Playgroud)

sql-server oledb ssis sql-agent

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

选择每个的最大值(Col1,Col2)

让我们假设下表:

Name             SubName        Message    Time
USA             MA              M1         1
USA             NY              M2         2
USA             WA              M3         3
USA             MA              M4         4
USA             WA              M5         5
USA             NY              M6         6
FIN             HEL             M7         7
FIN             TAM             M8         8
FIN             HEL             M9         9
Run Code Online (Sandbox Code Playgroud)

我想要一个SQL查询,它将返回以下内容:

Name             SubName        Message    Time
FIN              HEL            M9         9
FIN              TAM            M8         8
USA              NY             M6         6
USA              WA             M5         5
USA              MA             M4         4
Run Code Online (Sandbox Code Playgroud)

所以a ORDER BY time DESC,按不同的名称分组,并按不同的子名称分组.

这可能吗?我正在寻找一种不是DBMS特定的解决方案 - 可以在大多数DBMS中运行.

sql database-agnostic

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