小编Dan*_*Dan的帖子

代码首次尝试创建数据库时出现异常

我已经创建了一个新的ASP.NET MVC 4应用程序,并希望它首先使用代码.但是,如果数据库文件不存在,它似乎最初不会创建数据库文件.如果我从App_Data文件夹中删除.mdf文件,那么当应用程序尝试访问数据库时,我会收到以下异常:

System.Data.SqlClient.SqlException: Cannot attach the file '<path-to-db-file>.mdf' as database '<my-db-file-name>'.
Run Code Online (Sandbox Code Playgroud)

如果我在调试器中的应用程序中运行它,那么我可以看到在调用LazyInitializer.EnsureInitialized时在InitializeSimpleMembershipAttribute :: OnActionExecuting方法中发生异常.被捕获的例外是:

[System.Reflection.TargetInvocationException]   {"Exception has been thrown by the target of an invocation."}   System.Reflection.TargetInvocationException
Run Code Online (Sandbox Code Playgroud)

内部例外:

[System.InvalidOperationException]  {"The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588"} System.InvalidOperationException
Run Code Online (Sandbox Code Playgroud)

然后我将上面提到的第一个例外作为内部例外.

我有什么想法我做错了吗?

更新

我刚刚尝试使用全新的MVC4应用程序.我可以通过执行以下操作来复制它:

  1. 在VS向导中创建MVC应用程序.
  2. 首次运行应用程序并转到登录页面(注意现在生成mdf文件).
  3. 删除mdf文件,然后返回登录页面.现在抛出异常.

c# asp.net-mvc entity-framework entity-framework-4 ef-code-first

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

查询PHP信号量而不阻塞?

是否可以查询使用sem_get创建的信号量而不像sem_acquire函数那样实际阻塞?

干杯,丹.

php semaphore blocking

10
推荐指数
1
解决办法
1565
查看次数

大量使用PHP的"<?php"标签

我看到的一些PHP代码中充斥着"<?php"和"?>"标签,具体取决于它是否输出HTML.是否有任何性能优势而不是使用echo来编写HTML?当代码通过<?php标记在代码和HTML之间不断切换时,它使代码极难阅读.

请注意,我不只是在谈论偶尔的转换.我正在查看的代码(mantis-bt源代码)让我头疼的是它切换的次数.非常难读.我想知道他们是否有理由这样做?

php readability

10
推荐指数
1
解决办法
553
查看次数

在winforms应用程序中查询设计器

我正在为客户端开发一个Winforms C#应用程序,它取代了旧的基于MS Access的解决方案.这是一个完整的重写,现在使用SQL Server作为其数据库.该软件现在处于开发的最后阶段.

他们刚刚要求的一件事是能够进行自定义查询,软件的UI目前可能无法在他们需要时进行查询.

使用旧的Access解决方案,他们可以使用查询设计器来创建自己的自定义查询.使用winforms/Sql Server解决方案,他们无法做到这一点.他们也不想自己编写SQL.

谁能想到这个问题的好方法呢?也许是Winforms库,它允许用户创建业务对象和"和|或"逻辑的图形.或者其他一些类型的UI允许他们自定义查询,几乎就像他们可以在Access中做的那样(但可能更具域特性).

更新

我已经将Yaqub的答案标记为答案,因为这是我当时最接近我想要的答案.我最后为他们写了一个自定义表单来生成他们的查询:

在此输入图像描述

第二组中的"选择表..."组合框仅显示已添加到顶部列表框的表.

因为数据库布局现在几乎是一成不变的,所以我编写了代码来智能地计算所需的任何连接.例如,如果他们在顶部组中添加两个间接相关的表,那么当它生成SQL时,它将添加任何所需的连接以关联它们.如果数据库布局确实发生了变化,我可以很容易地在查询编辑器的代码中更改FK引用.

对于条件组,值控件(该组中的第4个控件)根据字段类型(文本框,数字上/下控制,日期选择器,复选框)而变化.

当他们点击"运行查询"时,他们会得到另一个带有显示结果的网格视图的表单.在该结果表单中,它们可以导出到制表符分隔文件.

我已经给了他们第一个版本,到目前为止他们似乎很满意.

我不想去Access路线,因为这个新版软件的重点是将它们从Access移开(好吧,不是全部,因为那里还有更多的功能).在那里保持对Access的依赖似乎是一个巨大的退步.这也意味着如果他们在Access中保存了大量自定义查询,并且我曾经更改过数据库模式,那么我很可能会破坏他们的查询.我不希望他们像这样访问数据库.在我看来,这是在惹麻烦.应该触及数据库的唯一事情是新软件,以及我们所做的任何自动数据库备份 - 没有别的,特别是不是用户!

在软件中执行此操作的另一个好处是,我可以对查询结果进行后期处理.例如,有很多数据分析算法在软件中运行,这些算法是用.NET代码编写的.所以我可以在这个界面中添加字段,允许他们选择这些算法的结果.

.net sql user-interface winforms

10
推荐指数
1
解决办法
5199
查看次数

Azure git部署 - 缺少第二个程序集中的引用

我正在尝试将Bitbucket部署设置为Azure网站.我成功地将Bitbucket和Azure链接起来,但是当我推送到Bitbucket时,我在Azure网站上收到以下错误:

在此输入图像描述

如果单击"查看日志",则会显示以下编译错误:

    D:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [C:\DWASFiles\Sites\<projname>\VirtualDirectory0\site\repository\<projname>.Common\<projname>.Common.csproj]
    D:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may …
Run Code Online (Sandbox Code Playgroud)

git deployment asp.net-mvc azure web-deployment

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

从另一个线程更新 Blazor 中的项目列表

每当从消息队列收到消息时,我都试图获取要更新的项目列表。

这只似乎每个工作收到虽然消息的时间。它肯定SubscribeAsync每次都在调用内部调用匿名方法,我无法弄清楚为什么它不是每次都更新。我假设它与位于不同线程中的匿名方法有关。任何想法我做错了什么?

@page "/"
@inject IMessageQueueHelperFactory MessageQueueHelperFactory
@inject ILogger<Index> Logger
@using Microsoft.Extensions.Logging
@using Newtonsoft.Json

<ul class="list-group">
    @foreach (var user in Users) {
        <li class="list-group-item">@user</li>
    }
</ul>

@code
{
    private List<string> Users { get; set; } = new List<string>();

    protected override void OnInitialized()
    {
        MessageQueueHelperFactory.Create(Queues.UserRegistration)
            .SubscribeAsync(async x =>
            {
                var user = JsonConvert.DeserializeObject<UserRegistrationData>(x);
                Users.Add(user.Username);
                await InvokeAsync(StateHasChanged);
            });

        base.OnInitialized();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core blazor blazor-server-side

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

使用 Azure Key Vault 签署 JWT 令牌

我正在使用私钥来签署 JWT 令牌,它按预期工作。但是,我想利用 Azure Key Vault 为我进行签名,以便私钥不会离开 KeyVault。我正在努力让它发挥作用,但不知道为什么。

这是不使用 KeyVault 并且可以工作的代码...

var handler = new JwtSecurityTokenHandler();

var expiryTime = DateTimeOffset.UtcNow.AddMinutes(10).ToUnixTimeSeconds();

var claims = new[]
{
    new Claim(JwtRegisteredClaimNames.Iss, clientId),
    new Claim(JwtRegisteredClaimNames.Sub, integrationUser),
    new Claim(JwtRegisteredClaimNames.Aud, "https://test.example.com"),
    new Claim(JwtRegisteredClaimNames.Exp, expiryTime.ToString()),
    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) // Add JTI for additional security against replay attacks
};

var privateKey = File.ReadAllText(@"selfsigned.key")
    .Replace("-----BEGIN PRIVATE KEY-----", "")
    .Replace("-----END PRIVATE KEY-----", "");

var privateKeyRaw = Convert.FromBase64String(privateKey);

var provider = new RSACryptoServiceProvider();
provider.ImportPkcs8PrivateKey(new ReadOnlySpan<byte>(privateKeyRaw), out _);
var rsaSecurityKey …
Run Code Online (Sandbox Code Playgroud)

.net c# azure jwt azure-keyvault

7
推荐指数
2
解决办法
5364
查看次数

Azure - 从Bitbucket部署

我有一个托管在Windows Azure上的网站,我在几个月前设置了它,当我推送到Bitbucket上的特定分支时自动部署 - 按照这些说明:

http://www.windowsazure.com/en-us/develop/net/common-tasks/publishing-with-git/#header-3

上次我对网站进行了任何更改(2012年11月24日),这工作正常.我刚推了另一个更改,但尚未部署.再次返回设置,看起来该功能已从Azure仪表板中删除.我不再在快速浏览部分看到"设置Git发布"选项.

我用谷歌搜索,看看我是否能找到任何关于删除此功能的引用,但我没有运气.有谁知道为什么突然我不再从我的Bitbucket帐户部署,或者在Azure控制面板中根本不再具有该功能?

git deployment azure

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

在 Azure 中运行时使用自定义范围时 DefaultAzureCredential().GetTokenAsync 失败

我正在尝试在 Azure AD 中进行服务到服务身份验证。当两个服务(webapps)针对 Azure AD 应用程序注册在本地运行时,我可以正常工作。但是,当 Web 应用程序在 Azure 中运行时(针对相同的 Azure AD 应用程序注册),它不起作用。

我创建了两个 Azure 应用服务 web 应用程序(它们是 ASP.NET Core Web API 项目) - 一个充当客户端,另一个充当服务器。损坏的部分是客户端 Web 应用程序,它从 AzureAD 请求访问令牌。仅当请求具有自定义范围的令牌时,它才会中断。不过,这个相同的“自定义范围”令牌请求在本地 Web 应用程序中工作得很好。

在Azure中,我创建了一个“应用程序注册”,并为其指定了一个名为“bob”的自定义范围...

在此输入图像描述

在客户端 ASP.NET Core webapi 应用程序中,我添加了Azure.Identitynuget 包,并且得到了这样的令牌...

var tokenRequestContext = new TokenRequestContext(new[] {scope});

token = await new DefaultAzureCredential().GetTokenAsync(tokenRequestContext, cancellationToken);
Run Code Online (Sandbox Code Playgroud)

(其中范围变量与上面屏幕截图中的名称匹配)

在本地,这工作正常并返回一个令牌。

在Azure中,我得到这个异常:

Azure.Identity.AuthenticationFailedException: DefaultAzureCredential failed to retrieve a token from the included credentials.
- ClientSecretCredential authentication failed: AADSTS70011: The provided request must include a 'scope' input …
Run Code Online (Sandbox Code Playgroud)

.net c# authentication azure azure-active-directory

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

如果仅在个人分支上,则重新调整推送的提交

我使用多台机器进行开发,因此想要一种“自我协作”的方式。因此,远程存储库上的个人分支是有意义的。显然,对于这个分支,我会进行大量的推/拉(即每次我在特定机器上开始/完成编码会话时)。我还喜欢在本地重新设置基础以压缩/整理我的一些提交。我知道您不应该对已推送到远程存储库的提交进行变基。但是,如果服务器上也存在的提交仅存在于我的私有分支中(没有其他人触及此分支),那么我对这些提交进行变基是否存在任何问题?

git git-rebase

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