小编Hoc*_*eyJ的帖子

如何在C#/ Bouncy Castle中创建PBKDF2-SHA256密码哈希

我需要创建一个PBKDF2-SHA256密码哈希,但是遇到了一些麻烦.

我下载了Bouncy Castle的回购,但在单元测试中找到了我想要的东西.

在这里找到了一些示例代码,但这只是SHA1.代码的关键点是:

/// <summary>
/// Computes the PBKDF2-SHA1 hash of a password.
/// </summary>
/// <param name="password">The password to hash.</param>
/// <param name="salt">The salt.</param>
/// <param name="iterations">The PBKDF2 iteration count.</param>
/// <param name="outputBytes">The length of the hash to generate, in bytes.</param>
/// <returns>A hash of the password.</returns>
private static byte[] PBKDF2(string password, byte[] salt, int iterations, int outputBytes)
{
    var pdb = new Pkcs5S2ParametersGenerator();
    pdb.Init(PbeParametersGenerator.Pkcs5PasswordToBytes(password.ToCharArray()), salt,
                 iterations);
    var key = (KeyParameter)pdb.GenerateDerivedMacParameters(outputBytes * 8);
    return key.GetKey(); …
Run Code Online (Sandbox Code Playgroud)

c# hash bouncycastle password-encryption

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

如何在.NET Core中还原SQL Server备份

我想.bak使用.NET Core 还原SQL Server数据库().这是我在GitHub上的空网站,所以你可以看到当前的配置.

在完整的.NET Framework中恢复数据库非常简单 - 这可以在这里看到.

有没有办法直接从.NET Core中执行此操作,还是需要引用.NET Framework并使用.NET Framework类库?

无论我如何尝试,我都无法让它发挥作用.

编辑

我尝试添加SQLManagementObject,但不能.我在.NET Core 2.0上.

在此输入图像描述

编辑2

我们的旧项目主要是ADO.NET.他们(广泛地)使用了以下我无法带入.NET Core Project的DLL:

  • Microsoft.SqlServer.ConnectionInfo
  • Microsoft.SqlServer.Smo
  • Microsoft.SqlServer.SmoExtended
  • Microsoft.SqlServer.Management.Sdk.Sfc

c# sql-server .net-core

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

在Entity Framework Core中创建非聚集索引

使用Entity Framework Core,我希望拥有一个Guid PK,而不会在数据库中出现页面碎片.

我看过这个帖子这个.虽然在EF6中可行,但它的完成方式似乎已经发生了变化.

是否可以在Entity Framework Core中创建非群集主键并具有其他索引?

问答答以下.

c# sql-server entity-framework entity-framework-core

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

.NET Core-自包含部署无法正常工作

我有一个.NET Core Web应用程序。我正在使用publish命令创建一个自包含的部署

它会创建文件并似乎会创建.net核心dll,但是在Windows 10上的IIS中运行时,我仍然需要安装.NET Core Runtime才能使其正常工作。安装.NET Core Hosting捆绑包后,它可以正常工作。

在询问之前,我已经审查了许多其他帖子,但找不到答案。

默认情况下,IIS给出以下错误:

HTTP错误500.19 –内部服务器错误

我的发布命令:

dotnet publish "mydirectory\mywebsite.csproj" --self-contained --framework netcoreapp2.1 -r win10-x64 -c Release
Run Code Online (Sandbox Code Playgroud)

csproj看起来像这样:

 <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <UserSecretsId>aspnet-mywebsite-656GASF8-B9H4-5963-1038-5D735B609E15</UserSecretsId>
      <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

这是已发布的文件。

在此处输入图片说明

我以为'l1-1-0'部分可能是错误的框架版本,但我的dotnet版本是2.1.500。

在此处输入图片说明

我需要怎么做才能使其正常工作?

web-deployment .net-core asp.net-core

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

.NET Core - 如何在团队中管理用户机密

秘密的存储用于.NET的核心是很好证明

但是,在 .NET Core 世界中,我找不到一篇关于如何在团队之间共享此类信息的好文章。

举例来说,我们有一个 .NET Core 项目,其中存储了信息,secrets.json并且有 10 个开发人员在使用该项目。

我能想到的选项:

  1. 将某些内容检查到源代码管理中 - 似乎违背了这一点(除了不小心将测试设置发布到现场之外)。

  2. 只是在我们之间交谈 - 有一种感觉,如果有人添加了一个秘密并去度假,其他开发人员会浪费时间找出遗漏了什么。如果两个开发人员同时添加一些东西,也可能会导致问题。

  3. 忽略secrets.json并始终使用Azure KeyVault - 即使对于开发人员也是如此。更复杂,我没有在任何地方看到推荐的,但它也适用于构建服务器。缺点是 Vault 可能会因未使用的设置而变得混乱,并且不清楚哪些需要实时复制。

可能还有其他选项我错过了。

与其他开发人员共享/同步秘密的最佳方式是什么?

编辑以下答案:

走 KeyVault 路线将起作用。如前所述,这需要额外的设置(例如,使用证书)。Microsoft Docs中的更多详细信息。

.net-core

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

Angular 升级 - 错误:必须从injectInjectorOnly 的注入上下文调用inject()

我有一个有角度的项目,结构如下:

\n

站点1

\n
    \n
  • 模块1
  • \n
  • 模块2
  • \n
  • SharedModule <- 不在库中,只是一个模块
  • \n
\n

站点2

\n
    \n
  • 模块3
  • \n
  • 模块4
  • \n
  • SharedModule <- 直接调用Main中的模块
  • \n
\n

我知道这并不理想,但事实就是如此。

\n

除了应用程序的名称之外,这些package.json文件完全相同。

\n

该项目是在 Angular 8 上启动的,并且一直升级得很好,但是从 11 到 12 我遇到了问题:

\n

Site1 构建良好并且运行良好。Site2 构建良好,但运行时立即出错

\n
\n

错误:必须从注入上下文\natjectInjectorOnly(核心:4745)\nat模块调用inject()。\xc9\xb5\xc9\xb5inject(核心:4755)\natObject.RouterModule_Factory [作为工厂](路由器:5999) )\nat R3Injector. Hydro (core.js:11438)\nat R3Injector.get (core.js:11257)\nat core.js:11295\nat Set.forEach ()\nat R3Injector._resolveInjectorDefTypes (core.js:11295 )\nat 新 NgModuleRef$1 (core.js:25325)\nat NgModuleFactory$1.create (core.js:25379)

\n
\n

由于 Site1 工作正常,我认为它一定是调用 SharedModule 的原因?

\n

我尝试添加"preserveSymlinks": true,到projects.$name.architect.build.options,但这不起作用。我没有使用npm link,因为另一个模块不是库(我知道它应该这样设置,但事实并非如此)。 …

angular

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

mediavieworder更改了mediarecorder.Start()

这个问题类似于这里,这里,这里,这里这里的帖子,但我被困住了,花了好几个小时试图解决它.

我有一个摄像机预览(现在总是以正确的方向显示),但是当我点击记录(mediaRecorder.start();)时,视频方向会改变.我尝试过使用setOrientationHint,但它似乎没有什么区别(如下面代码中的注释所标记).

它会影响我的测试设备(Galaxy和Jelly Bean上的Xperia).我该怎么做才能解决这个问题?

这是我的代码:

XML

<RelativeLayout android:id="@+id/surface_camera"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerInParent="true"
    android:layout_weight="1"
    >

    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <FrameLayout
            android:id="@+id/videoview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>
        <Button
            android:id="@+id/mybutton"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:text="REC"
            android:textSize="12dp"/>
    </RelativeLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

Java的

package hockeyj.androidlisttesting;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.media.CamcorderProfile;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.Display;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button; …
Run Code Online (Sandbox Code Playgroud)

android android-camera android-mediarecorder

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

如何在.NET Core中撤消Entity Framework Update-Database

在标准.NET版本的实体框架中,您可以使用撤消上次数据库更新.

Update-Database -TargetMigration "NameOfPreviousMigration"
Run Code Online (Sandbox Code Playgroud)

如果您在Entity Framework for .NET Core(EntityFrameworkCore)上尝试此操作,则会收到以下错误:

Update-Database:找不到与参数名称"TargetMigration"匹配的参数.在行:1 char:17 + Update-database -TargetMigration"NameOfPreviousMigration"+ ~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidArgument :( :) [Update-Database],ParameterBindingException + FullyQualifiedErrorId :NamedParameterNotFound,Update-Database

如何在.NET Core中还原数据库?

c# entity-framework entity-framework-core .net-core asp.net-core

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

VSTS-“允许脚本访问OAuth令牌”在哪里?

我有使用Powershell脚本访问VSTS API的VSTS构建,类似于Microsoft文档中详细介绍

该文件指出:

要使脚本能够使用构建过程OAuth令牌,请转到构建定义的“选项”标签,然后选择“允许脚本访问OAuth令牌”。

完成之后,您的脚本可以使用SYSTEM_ACCESSTOKEN环境变量来访问VSTS REST API。例如:

例:

$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build-release/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=2.0"
Write-Host "URL: $url"
$definition = Invoke-RestMethod -Uri $url -Headers @{
    Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Definition = $($definition | ConvertTo-Json -Depth 1000)"
Run Code Online (Sandbox Code Playgroud)

如Microsoft文档中所述,我确定您曾经去过Build> Options,然后单击“允许脚本访问OAuth令牌”,但是它不再存在(请参见下图)。

在此处输入图片说明

当我尝试构建时,会得到以下信息(对于我的旧构建不会发生):

Invoke-RestMethod:{“ $ id”:“ 1”,“ innerException”:null,“ message”:“ TF400813:用户”无权访问此文件

此外,当我克隆一个构建(3个月前完成该构建时效果很好)时,该属性设置为false(在原始属性上设置为true)。

在此处输入图片说明

更新:如果我从VSTS导出,更改该属性然后再次导入,它可以工作,但是我确实需要没有这种手动干预的解决方案。

请现在应该怎么做?

powershell azure-devops azure-pipelines

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

以较长的运行时间调用存储过程

我正在尝试使用C#调用存储过程.存储过程的运行时间很长(3到4分钟),当我尝试运行它们时会导致超时异常.如何允许它们以更长的超时完成运行?

当它抛出异常时,存储过程是否继续在服务器上运行,还是停止?

我的应用程序是游戏服务器,存储过程运行以更新和删除邮件.它运行缓慢,因为有太多的记录和太多的连接,用户在SP运行的同时插入另一条记录.

我只需要运行SP并等待很长时间来响应服务器.

@minitech感谢您编辑我的问题

这是SP代码

ALTER    PROCEDURE [dbo].[SP_Mail_Scan]
 @NoticeUserID nvarchar(4000) output

AS  
Set @NoticeUserID=''
Declare @AuctionID Int        
Declare @AuctioneerID Int
Declare @AuctioneerName Nvarchar(100)
Declare @BuyerID Int
Declare @BuyerName Nvarchar(100)
Declare @ItemID Int
Declare @PayType Int
Declare @Price Int
Declare @Name Nvarchar(200)


Declare @MailID Int
Declare @SenderID Int
Declare @Sender Nvarchar(100)
Declare @ReceiverID Int
Declare @Receiver Nvarchar(100)
Declare @Title Nvarchar(1000)
Declare @Content Nvarchar(4000)
Declare @SendTime DateTime
Declare @IsRead Bit
Declare @IsDelR Bit
Declare @IfDelS Bit
Declare @IsDelete Bit
Declare @Annex1 …
Run Code Online (Sandbox Code Playgroud)

c# sql-server stored-procedures

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

我应该在 AesGcm 中使用迭代吗?

读到 RijndaelManaged 已被弃用并且AesGcm(在 .NET Core 3.1 中引入)优于AesManaged后,我尝试使用本教程和此答案来实现AesGcm

这是我的代码:

/// Perform AES Encryption, returning the result as a byte array.
/// </summary>
/// <param name="bytesToEncrypt">string, file or data represented as byte array</param>
/// <param name="passwordBytes">A unique password for the encryption (must be 32 bytes?)</param>
/// <returns>The data encrypted</returns>
public byte[] EncryptData(byte[] bytesToEncrypt, byte[] passwordBytes)
{
    // Based on /sf/ask/4262254181/#60891115

    // Get parameter sizes
    int nonceSize = AesGcm.NonceByteSizes.MaxSize;
    int tagSize = …
Run Code Online (Sandbox Code Playgroud)

c# encryption aes encryption-symmetric aes-gcm

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

什么是私钥,什么是公钥?

这个问题看起来很简单,但我正在准备 70-483 C# 考试,有点困惑。

我知道公钥/私钥是数学上相互关联的属性。一个可以加密消息,另一个可以解密。

我读到的所有内容,例如维基百科Quoracodeproject 都显示了用于加密的公钥和用于解密的私钥。

然而,我正在进行的模拟考试(MeasureUp)似乎改变了所使用的考试。

有时答案声明使用公钥进行加密,但有时他们声明使用私钥。

例子:

应用程序必须与 DMV 安全通信。DMV 必须确保从您的应用程序发送的数据在传输过程中没有被修改。

回答示例:

生成数据的哈希值。使用您公司的私钥加密哈希值。将数据和加密的哈希值发送到 DMV。

然后“显示答案”部分继续解释上面明确指出使用私钥加密的内容。

难道你必须在上下文中考虑什么是公开的、什么是私有的吗?

例如

A) 如果其他人是否可以看到该消息并不重要,只要他们无法制作自己的消息即可 - 使用您“保密”的密钥进行加密。

B) 如果其他人可以发送消息,只要我是唯一可以阅读该消息的人 - 使用公开可用的密钥进行加密。

我觉得 MeasureUp 可能错了,但我肯定比大公司更有可能错。

请有人解释/澄清为什么这个答案是正确的?

encryption public-key-encryption

0
推荐指数
1
解决办法
295
查看次数

错误“名称空间不能直接包含字段或方法之类的成员”是什么意思?

我将以下代码添加到我的C#Windows窗体应用程序中,以在单击关闭按钮时显示消息框。但是它给了我以下错误。

错误CS0116名称空间不能直接包含诸如字段或方法之类的成员eBay源C:\ Users \ Supun \ Documents \ Visual Studio 2015 \ Projects \ ebay源\ ebay源\ Form1.cs 107活动

这是我使用的代码。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    DialogResult dialog = dialog = MessageBox.Show(
      "Do you really want to close the program?", 
      "SomeTitle", 
       MessageBoxButtons.YesNo);

    if (dialog == DialogResult.No)
    {
        e.Cancel = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要做什么来修复它?

c# winforms

-1
推荐指数
1
解决办法
3047
查看次数