我在具有数据传输对象 (DTO) 类的项目中激活了此功能,如下所示:
public class Connection
{
public string ServiceUrl { get; set; }
public string? UserName { get; set; }
public string? Password { get; set; }
//... others
}
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
CS8618:不可为空的属性“ServiceUrl”未初始化。考虑将该属性声明为可为空的。
这是一个 DTO 类,所以我没有初始化属性。这将是初始化类的代码的责任,以确保属性不为空。
例如,调用者可以这样做:
var connection = new Connection
{
ServiceUrl=some_value,
//...
}
Run Code Online (Sandbox Code Playgroud)
我的问题:当启用 C#8 的可空性上下文时,如何处理 DTO 类中的此类错误?
我正在全新安装 Windows 10 专业版 (10.0.18362) 并尝试安装 Visual Studio 2019 并针对 .NET Core 3.1 Web 开发进行配置,但遇到了几个问题。
我创建了一个默认的 React.js ASP.NET Core Web 应用程序并运行了该项目。一切似乎都正常,只是在更新 JavaScript 代码后,浏览器会在一段相当长的停顿后更新;事情似乎滞后了。
从默认 Web 应用程序(无更新)关闭 Visual Studio 2019 后,有几个进程似乎挂起,必须手动关闭:
除了手动安装 Node.js V12.4 和 V13.6 之外,我还尝试使用 Visual Studio 安装程序提供的 Node.js 安装 Visual Studio 2019,结果相同。
另一个问题:如果我使用 将项目从 JavaScript 更新为 TypeScript npx create-react-app client-app --typescript,热更新将完全停止工作。但是在更新 JavaScript 代码并刷新浏览器之后,事情似乎有所更新,因此它似乎确实在重新编译。我试过在 Firefox 和 Chrome 中调试,结果都一样。
我很犹豫要不要继续使用这个安装,因为我在这些过程中遇到了几个问题。如果这些意外挂起并且没有关闭,它们将继续使用旧版本的代码,并且在关闭进程之前所做的任何事情都不会更新,从而导致完全的疯狂。
是否有我需要执行的特定安装过程作为解决方法?或者我可能缺少 NuGet 包或附加组件?由于这是操作系统的全新安装,是否需要安装 Windows 功能?或其他可能导致此问题的配置/权限更改?
在此安装之前,只有在 Visual Studio 2017 中创建的项目似乎按预期工作。但是我需要在 .NET Core 3.0 中开发这个站点,而且看起来只支持 Visual Studio 2019。
经过一番折腾,看起来问题是由 …
node.js typescript reactjs visual-studio-2019 asp.net-core-3.0
我想在 C# 8.0 中测试新的可为空引用类型功能。
我启动了一个针对 .NET Core 3.0 的新项目,在.csproj文件中启用了可为空的引用类型,并开始编码。我创建了一个简单的列表,它接受 astring[]并返回该string数组中等于 的abc。现在,因为我不确定abc数组中是否真的存在,所以我使用FirstOrDefault(),null如果没有找到匹配项,它应该默认为。
using System;
using System.Linq;
public string FindArgument(string[] args)
{
var arg = args.FirstOrDefault(x => x == "abc");
return arg;
}
Run Code Online (Sandbox Code Playgroud)
我的方法的返回值string,这应该现在是非空的类型。由于FirstOrDefault()可能返回null,我希望上述方法在返回可能为空 arg变量时产生警告。它不是。
查看FirstOrDefault()Visual Studio 中的签名,很明显原因:该方法返回一个string,而不是string?我期望的可空等价物。
使用下面的方法体确实会产生我预期的警告:
var arg = args.Contains("abc") ? "abc" : …Run Code Online (Sandbox Code Playgroud) 在HNQ 上阅读了这个问题后,我继续阅读C# 8 中的可空引用类型,并做了一些实验。
我非常清楚,当有人说“我发现了一个编译器错误!”时,10 次中有 9 次,甚至更频繁。这其实是有意为之,也是自己的误会。而且因为我今天才开始研究这个功能,显然我对它不是很了解。有了这个,让我们看看这段代码:
#nullable enable
class Program
{
static void Main()
{
var s = "";
var b = s == null; // If you comment this line out, the warning on the line below disappears
var i = s.Length; // warning CS8602: Dereference of a possibly null reference
}
}
Run Code Online (Sandbox Code Playgroud)
在阅读我上面链接的文档后,我希望该s == null行给我一个警告——毕竟s显然是不可为空的,所以将它与它进行比较null是没有意义的。
相反,我在下一行收到警告,警告说这s可能是一个空引用,即使对于人类来说,很明显它不是。
此外,如果我们不与 进行比较,则不会显示警告。 …
我有一个在 ASP.NET Core 3.x 上运行的现有 Azure 应用服务。我已将应用程序升级到今天发布的ASP.NET Core 5。这在我的本地 IIS Express 服务器上运行良好。但是,当我使用 Visual Studio 2019 将应用程序发布到应用服务时,收到以下错误:
HTTP 错误 500.31 - ANCM 无法找到本机依赖项
此问题的常见解决方案:
未找到指定版本的 Microsoft.NetCore.App 或 Microsoft.AspNetCore.App。
随着启用了详细的错误,我得到了以下信息:
It was not possible to find any compatible framework version
The framework 'Microsoft.AspNetCore.App', version '5.0.0' was not found.
The following frameworks were found:
2.1.20 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
2.1.22 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
2.2.11 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
2.2.14 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
3.0.3 at [D:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] …Run Code Online (Sandbox Code Playgroud) azure azure-web-app-service asp.net-core .net-5 asp.net-core-5.0
我知道您可以使用 Newtonsoft 轻松完成此操作。然而,当我使用 .NET Core 3.0 时,我正在尝试使用新方法与 JSON 文件交互System.Text.Json——即——我拒绝相信我正在尝试做的事情有那么困难!
我的应用程序需要列出尚未添加到我的数据库中的用户。为了获取所有用户的完整列表,该应用程序从 Web API 检索 JSON 字符串。我现在需要遍历这些用户中的每一个,并在将新的 JSON 列表返回到我的视图之前检查他们是否已经添加到我的应用程序中,以便它可以向最终用户显示新的潜在用户。
由于我最终会在流程结束时返回另一个 JSON,因此我不想特别费心将其反序列化为模型。请注意,来自 API 的数据结构可能会改变,但它总会有一个键,我可以从中与我的数据库记录进行比较。
我的代码目前看起来像这样:
using (WebClient wc = new WebClient())
{
var rawJsonDownload = wc.DownloadString("WEB API CALL");
var users = JsonSerializer.Deserialize<List<UserObject>>(rawJsonDownload);
foreach (var user in users.ToList())
{
//Check if User is new
if (CHECKS)
{
users.Remove(user);
}
}
return Json(users);
}
Run Code Online (Sandbox Code Playgroud)
为了实现对 Newtonsoft 来说相当微不足道的东西,这似乎有很多障碍需要跳过。
任何人都可以建议我这样做的更好方法 - 理想情况下,不需要UserObject?
在 .NET 7 中,我这样做:
dotnet publish --self-contained --configuration Release --runtime win7-x64 --output myapp
Run Code Online (Sandbox Code Playgroud)
如何防止.pdb结果中出现文件?理想情况下,只使用 CLI?
我可以采取任何其他步骤来减小结果大小吗?
我正在尝试向 .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
我有一个预先存在的ASP.NET Core 3.0应用程序,它已成功部署到Azure 应用服务(使用AspNetCoreModuleV2模块)。将应用程序升级到(今天的版本)ASP.NET Core 3.1 后,应用程序在我的本地版本IIS Express上构建并正确运行。但是,当我尝试使用(今天发布的)Visual Studio 16.4发布到 Azure 应用服务时,我收到以下错误:
资产文件“C:\Project\obj\project.assets.json”没有“.NETCoreApp,Version=v3.0”的目标。确保恢复已运行并且您已在项目的 TargetFrameworks 中包含“netcoreapp3.0”。
<PackageReference>到Microsoft.AspNetCore, Microsoft.EntityFrameworkCore, 并且Microsoft.Extensions已更新为3.1.0obj文件夹以确保没有任何遗留的引用。3.1.100的版本Microsoft.PackageDependencyResolution.targets。我知道有些东西仍然挂在.NET Core 3.0依赖项上。但目前还不清楚为什么这只会在部署过程中引起问题。是Azure的应用程序Service的还没有准备好.NET 3.1的核心?或者这是依赖解析目标的问题?
visual-studio webdeploy azure-web-app-service asp.net-core asp.net-core-3.1
我正在尝试定义一个MapAreaControllerRoute()到多个区域的路由。但是,在 ASP.NET Core 3.0 中,有areaName:一个需要设置的参数,因此将每个路由限制在一个区域内。我不明白如何使用一条适用于多个区域的路线。
我已经阅读了有关 Stack Overflow 的许多问题,但似乎这是 ASP.NET Core 3.0 中的一个新要求。在 ASP.NET Core <= 2.2 中,您可以在MapRoute()不定义 set的情况下创建 a areaName。
就像现在一样,在 my 中Startup.cs,我将端点定义为:
app.UseEndpoints(endpoints =>
{
endpoints.MapAreaControllerRoute(
name: "Area1",
areaName: "Area1",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
endpoints.MapAreaControllerRoute(
name: "Area2",
areaName: "Area2",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)
当然,必须有一种方法来定义一条路线来覆盖所有区域?