小编Jen*_*nsB的帖子

我什么时候应该创建一个新的DbContext()

我目前正在使用DbContext类似于此:

namespace Models
{
    public class ContextDB: DbContext
    {

        public DbSet<User> Users { get; set; }
        public DbSet<UserRole> UserRoles { get; set; }

        public ContextDB()
        {

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我在所有需要访问数据库的控制器的顶部使用以下行.我也在我的UserRepository类中使用它,它包含与用户相关的所有方法(例如获取活动用户,检查他拥有的角色等等):

ContextDB _db = new ContextDB();
Run Code Online (Sandbox Code Playgroud)

考虑到这一点......当一个访问者可以有多个DbContexts活动时,就会出现这种情况.如果他访问使用UserRepository的控制器..这可能不是最好的想法,我有一些关于它的问题

  1. 什么时候我应该创建一个新的DbContext /我应该有一个我传递的全局上下文?
  2. 我可以在所有地方重用一个全局上下文吗?
  3. 这是否会导致性能下降?
  4. 别人怎么做这个?

c# asp.net-mvc entity-framework asp.net-mvc-4

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

向 .NET Core 3 应用程序添加身份服务器身份验证失败,并显示“未指定密钥类型”。

我正在尝试向 .NET Core 3 API 项目添加身份服务器身份验证。

我已经添加了这个代码

public void ConfigureServices(IServiceCollection services)
{
    … 

    var identityBuilder = services.AddIdentityServer();

    identityBuilder.AddApiAuthorization<ApplicationUser, DbContext>();

    services
        .AddAuthentication()
        .AddIdentityServerJwt();

    var fileName = Path.Combine("Certificates", "certificatefile.pfx");
    var cert = new X509Certificate2(fileName, "veryDifficultPassword");
    identityBuilder.AddSigningCredential(cert);

    … 
}
Run Code Online (Sandbox Code Playgroud)

和:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    … 
    app.UseAuthentication();
    app.UseIdentityServer(); // <--- this line throws error.
    app.UseAuthorization();
    … 
}

Run Code Online (Sandbox Code Playgroud)

文件/Certificates夹中有一个文件可以正确读取和加载- 我可以检查cert变量并且它看起来是正确的。

到目前为止,我所尝试的一切都以线路app.UseIdentityServer();炸毁而告终:

System.InvalidOperationException: '未指定密钥类型。'

有什么建议?

更新:包括堆栈跟踪

System.InvalidOperationException
  HResult=0x80131509
  Message=Key type not specified.
  Source=Microsoft.AspNetCore.ApiAuthorization.IdentityServer
  StackTrace:
   at Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ConfigureSigningCredentials.LoadKey()
   at …
Run Code Online (Sandbox Code Playgroud)

.net-core asp.net-core identityserver4 asp.net-core-identity asp.net-core-3.0

12
推荐指数
1
解决办法
6603
查看次数

在Windows Phone 8上使用Unity发布帖子请求

我正在尝试从Unity平台上的Windows Phone 8上发布帖子请求.我不想使用统一WWW方法,因为这会阻止渲染(并且不是线程安全的).

以下代码适用于编辑器和Android,但在为WP8构建时,我收到以下错误.

System.Byte [] System.Net.WebClient :: UploadData(System.String,System.String,System.Byte [])`在目标框架中不存在.

此处解释了此错误的原因

这是因为Windows Phone 8使用了一种名为.NET for Windows Phone的不同版本的.NET,它缺少其他平台上可用的某些类型.您必须用不同的类型替换这些类型或自己实现它们.- http://docs.unity3d.com/Manual/wp8-faq.html

这是我的代码

using (WebClient client = new WebClient())
{
    client.Encoding = System.Text.Encoding.UTF8;
    client.Headers[HttpRequestHeader.ContentType] = "application/json";

    byte[] requestData = new byte[0];
    string jsonRequest = "{}";
    if (data != null) 
    {
        string tempRequest = Converter.SerializeToString (data);
        jsonRequest = "{\"Data\": \"" + tempRequest + "\"}";

        requestData = System.Text.Encoding.UTF8.GetBytes(jsonRequest);
    }

    // below line of code is the culprit    
    byte[] returnedData = client.UploadData(url, "POST", requestData);

    if(returnedData.Length > 0) …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine windows-phone-8 unityscript

9
推荐指数
1
解决办法
755
查看次数

在浏览器中显示 Azure blob 图像文件并且不强​​制下载

这个问题不久前已经被问过。我希望今天的答案有所不同。

我正在使用 Azure blob 存储来保存网站的图像 (jpg)。我直接链接到标签中的文件<img>,效果很好(已启用匿名访问)。问题是,如果用户单击图像(直接链接到文件),他们将被迫下载它并且无法在浏览器中查看它。

有没有办法设置 Blob 存储的标头,以允许直接在浏览器中查看而不强制下载。

更新1:

基于此How can I view an image from Azure Blob Storage,而不是下载它?这个https://social.msdn.microsoft.com/Forums/windowsapps/en-US/b8759195-f490-420b-a587-2bb614366ad2/embedding-images-from-blob-storage-in-ssrs-report-does-不行

我发现我没有设置内容类型,这导致了问题。我需要将其设置为"image/jpeg". 不过我不太确定该怎么做。这是我用来存储图像的代码。

using Microsoft.Azure.Storage.Blob

/// <summary>
/// Save a file to azure blob storage.
/// </summary>
/// <param name="name">Name of file</param>
/// <param name="file">filestream</param>
/// <param name="ct">Cancellationtoken</param>
public async Task<bool> SaveFile(Stream fileStream, string fileName, CancellationToken ct)
{
   CloudBlockBlob cloudBlockBlob = _blobContainer.GetBlockBlobReference(fileName);

   fileStream.Position = 0;
   await cloudBlockBlob.UploadFromStreamAsync(fileStream, ct);

   return …
Run Code Online (Sandbox Code Playgroud)

azure azure-blob-storage

8
推荐指数
1
解决办法
3470
查看次数

基准可用于C#的库

我想对我管理的几台服务器进行基准测试,并希望能够设置我自己的场景和事件/自动化顺序.

所以我想知道是否有任何库可以用来执行Windows计算机的不同方面的基准测试,如CPU,磁盘IO和RAM.

更新1:由于似乎没有可用的库来执行此操作,我还将接受指向如何使用C#测试CPU,磁盘和内存性能的示例或指南的答案.

更新2是否有任何语言的好库?

c# windows benchmarking

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

从外部MVC应用程序中的CrmOrganizationServiceContext获取OrganizationServiceProxy

我希望能够设置我的来电显示

XrmServiceContext : Microsoft.Xrm.Client.CrmOrganizationServiceContext
Run Code Online (Sandbox Code Playgroud)

使用svcutil.exe为crm生成的上下文.

据我所知,我无法在现有连接上执行此操作,我需要首先创建一个OrganizationServiceProxy设置Call​​erID 的实例,然后将其作为参数传递给新的XrmServiceContext,然后我可以使用它.

然而,我有点被困在我如何从一个人CrmOrganizationServiceContextOrganizationServiceProxy

该程序是一个单独的.Net4.5应用程序

任何有用的提示或链接?


编辑:发布此内容后发现此页面:http: //msdn.microsoft.com/en-us/library/gg695810.aspx

所以它可能很简单:

    var connection = new CrmConnection("Xrm");
    connection.CallerId = uide;
    _serviceContext = new XrmServiceContext(connection);
Run Code Online (Sandbox Code Playgroud)

编辑2:事情并不那么简单.这样做不会改变我收到的数据.

    CrmConnection connection = new CrmConnection("Xrm");
    connection.CallerId = Guid.NewGuid();//u.Id;

    _serviceContext = new XrmServiceContext(connection);
Run Code Online (Sandbox Code Playgroud)

它编译并且不会崩溃,但是当我使用具有非常低的权限但仍然获得所有数据的用户的id时我怀疑,然后我尝试为XrmServiceContext的每个实例生成新的Guid但是我仍然得到了所有的回报.所以我猜它没有被使用..或者我错过了别的东西.

编辑3 在设置WhoAmIRequest之后执行a CallerID仍将返回在连接字符串中设置的同一用户.

编辑4 似乎我的问题与缓存有关.在我的实现中,我需要首先调用服务上下文来找出我想要模仿的用户的Guid.此调用未CallerID设置.如果我跳过这个初始查询并从头开始设置一个特定的Guid,那么CallerID就可以了.我猜这是因为服务上下文缓存了我原来的CallerId或类似的东西.

现在我只需要弄清楚如何清除CRM 2013 SDK中的缓存.

编辑5 使用本指南完整地关闭缓存:http://msdn.microsoft.com/en-us/library/gg695805.aspx我已经让它工作了.然而,如果我能在我需要的那一点清除它而不是完全禁用它,我会更喜欢.

如果有人可以告诉我如何使用代码清空服务上下文缓存,我会将其标记为正确的解决方案

c# dynamics-crm-2011

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

让Monogame内容管道在Windows 8中与Visual Studio 2013一起使用

我已经在VS 2013中使用了monogame,但我无法让内容管道工作.当我尝试导入现有的内容管道项目时,我收到以下错误.

无法加载内容管道

由于2013年没有安装模板,因此我无法创建新项目.

由于我正在运行Windows 8,我无法安装XNA(安装程序停止说它需要Win 7或Vista).在这里阅读:https://github.com/mono/MonoGame/wiki/MonoGame-Content-Processing 似乎需要XNA ..?

编辑

Fex答案获取VS 2013中安装的模板,我可以创建一个新的MonoGame Windows项目.但是我仍然无法创建或打开内容项目,因为它们会因此错误而崩溃

在此输入图像描述

c# monogame content-pipeline visual-studio-2013

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

SQL Server:查看比单独查询慢得多

从这个 SO 答案来看,视图应该提供与直接使用相同查询相同的性能。

查询视图比直接执行 SQL 慢吗?

我有一个观点,这是不正确的。

此查询针对视图

SELECT 
    * 
FROM 
    [Front].[vw_Details] k
WHERE 
    k.Id = 970435
Run Code Online (Sandbox Code Playgroud)

需要 10 秒才能完成。从视图复制查询并将其添加WHERE k.Id = 970435到其中的操作不到 1 秒即可完成。视图没什么特别的,4LEFT JOIN秒,还有一些CASE清理数据的指令。

我怎样才能弄清楚问题是什么,或者我需要用什么来完成这个问题才能回答这个问题?

更新 1:

t-sql sql-server sql-server-2014

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

在微服务环境中使用 Angular 2+

在过去的几年里,我已经构建了几个 angular(2+ 打字稿)应用程序并且已经非常习惯了。然而,在我参与的一个项目中,我们正在使用微服务架构,该架构鼓励将所有内容尽可能拆分成小的可用(和合理)部分,然后将其加载到主页中,并且可以相互独立地执行操作。

如果这是一个没有交互式内容的常规 HTML 页面,这将很容易做到。但在这种情况下,我们可以有一个页面:搜索功能、列表功能和详细信息模式。这些东西都需要能够相互交互并对事件做出反应,最好充当 SPA,在导航时不需要页面加载。

在一个经典的 Angular 应用程序中,我会使用模块和组件(反过来可以使用公共共享组件并且所有组件都可以延迟加载)来构建它,并在单个 Angular 应用程序中设置共享路由。但是如何在保持微服务标准/架构的同时做到这一点?这对前端来说甚至是可取的吗?人们可以将 Angular 中的模块视为一种微服务,但这是否足够好?

我找到了诸如https://single-spa.js.org/ 之类的库。这是解决这个问题的方法吗?创建多个小应用程序并将它们与上面的另一个框架缝合在一起?然而,这将需要更多的带宽,因为前端需要多次下载而不是一次。

乍一看,这一切似乎都使任务复杂化,但收效甚微。特别是因为在常规 Angular 应用程序中,应用程序的一部分可能会停止工作,而不会真正影响 Angular SPA 的另一部分(这是 MS 的主要目标之一)。是否有一些标准化的指标可以用来查看何时创建单个 SPA 或使用拆分的微服务变体更好?

single-page-application microservices angular

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

ng-options 在值中添加“字符串:”而不更新 ng-model

我有这样的数据:

"RequirementLevels": {
 "285960000":"Black",
 "285960001":"Green",
 "285960002":"Blue",
 "285960003":"Purple"
}
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的选择:

<select ng-options="key as value for (key , value) in Variables.Template.RequirementLevels"
        ng-model="Variables.EditingNode.RequirementLevel"
        ng-model-options="{ debounce: 300 }"></select>
<span>"{{Variables.EditingNode.RequirementLevel}}"</span>
Run Code Online (Sandbox Code Playgroud)

这会产生以下 html: 在此处输入图片说明

请注意string:选择选项中每个值前面的 。使用下面的代码我没有得到string:值。

<select ng-model="Variables.EditingNode.RequirementLevel">
     <option ng-repeat="(key, value) in Variables.Template.RequirementLevels" value="{{key}}">{{value}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么我会出现string:在 ng-option 列表中,以及如何让它消失。

由于评论而更新:我想更改此设置的原因是因为 ng-model 值在其中包含该值时不起作用string:。我认为这是因为它与模型中使用“123”的选项设置中的“string:123”不匹配。

更新 2

这是创建选择的 Html。

<div class="form-group input-group">
    <label for="ReviewDone">Requirement level</label>
    <select ng-options="key as value for (key , value) in Variables.Template.RequirementLevels track by key"
            ng-model="Variables.EditingNode.RequirementLevel"
            ng-model-options="{ debounce: …
Run Code Online (Sandbox Code Playgroud)

angularjs

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