我已经创建了一个新的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应用程序.我可以通过执行以下操作来复制它:
c# asp.net-mvc entity-framework entity-framework-4 ef-code-first
是否可以查询使用sem_get创建的信号量而不像sem_acquire函数那样实际阻塞?
干杯,丹.
我看到的一些PHP代码中充斥着"<?php"和"?>"标签,具体取决于它是否输出HTML.是否有任何性能优势而不是使用echo来编写HTML?当代码通过<?php标记在代码和HTML之间不断切换时,它使代码极难阅读.
请注意,我不只是在谈论偶尔的转换.我正在查看的代码(mantis-bt源代码)让我头疼的是它切换的次数.非常难读.我想知道他们是否有理由这样做?
我正在为客户端开发一个Winforms C#应用程序,它取代了旧的基于MS Access的解决方案.这是一个完整的重写,现在使用SQL Server作为其数据库.该软件现在处于开发的最后阶段.
他们刚刚要求的一件事是能够进行自定义查询,软件的UI目前可能无法在他们需要时进行查询.
使用旧的Access解决方案,他们可以使用查询设计器来创建自己的自定义查询.使用winforms/Sql Server解决方案,他们无法做到这一点.他们也不想自己编写SQL.
谁能想到这个问题的好方法呢?也许是Winforms库,它允许用户创建业务对象和"和|或"逻辑的图形.或者其他一些类型的UI允许他们自定义查询,几乎就像他们可以在Access中做的那样(但可能更具域特性).
我已经将Yaqub的答案标记为答案,因为这是我当时最接近我想要的答案.我最后为他们写了一个自定义表单来生成他们的查询:

第二组中的"选择表..."组合框仅显示已添加到顶部列表框的表.
因为数据库布局现在几乎是一成不变的,所以我编写了代码来智能地计算所需的任何连接.例如,如果他们在顶部组中添加两个间接相关的表,那么当它生成SQL时,它将添加任何所需的连接以关联它们.如果数据库布局确实发生了变化,我可以很容易地在查询编辑器的代码中更改FK引用.
对于条件组,值控件(该组中的第4个控件)根据字段类型(文本框,数字上/下控制,日期选择器,复选框)而变化.
当他们点击"运行查询"时,他们会得到另一个带有显示结果的网格视图的表单.在该结果表单中,它们可以导出到制表符分隔文件.
我已经给了他们第一个版本,到目前为止他们似乎很满意.
我不想去Access路线,因为这个新版软件的重点是将它们从Access移开(好吧,不是全部,因为那里还有更多的功能).在那里保持对Access的依赖似乎是一个巨大的退步.这也意味着如果他们在Access中保存了大量自定义查询,并且我曾经更改过数据库模式,那么我很可能会破坏他们的查询.我不希望他们像这样访问数据库.在我看来,这是在惹麻烦.应该触及数据库的唯一事情是新软件,以及我们所做的任何自动数据库备份 - 没有别的,特别是不是用户!
在软件中执行此操作的另一个好处是,我可以对查询结果进行后期处理.例如,有很多数据分析算法在软件中运行,这些算法是用.NET代码编写的.所以我可以在这个界面中添加字段,允许他们选择这些算法的结果.
我正在尝试将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) 每当从消息队列收到消息时,我都试图获取要更新的项目列表。
这只似乎每个工作等收到虽然消息的时间。它肯定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) 我正在使用私钥来签署 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) 我有一个托管在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控制面板中根本不再具有该功能?
我正在尝试在 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) 我使用多台机器进行开发,因此想要一种“自我协作”的方式。因此,远程存储库上的个人分支是有意义的。显然,对于这个分支,我会进行大量的推/拉(即每次我在特定机器上开始/完成编码会话时)。我还喜欢在本地重新设置基础以压缩/整理我的一些提交。我知道您不应该对已推送到远程存储库的提交进行变基。但是,如果服务器上也存在的提交仅存在于我的私有分支中(没有其他人触及此分支),那么我对这些提交进行变基是否存在任何问题?
azure ×4
c# ×4
.net ×3
git ×3
asp.net-mvc ×2
deployment ×2
php ×2
asp.net-core ×1
blazor ×1
blocking ×1
git-rebase ×1
jwt ×1
readability ×1
semaphore ×1
sql ×1
winforms ×1