标签: .net-core

Azure 中 Sqlite 的正确连接字符串变量是什么?

尝试将 Azure 上的 Sqlite 数据库与默认的 dotnet core 示例应用程序一起使用,并进行身份验证和授权。在我的本地计算机上,它将数据库放在/Users/me/Projects/myProj/bin/Debug/netcoreapp1.0/myProj.db- 并且我的appsettings.json包含以下内容:

"ConnectionStrings": {
    "DefaultConnection": "Data Source=myProj.db"
Run Code Online (Sandbox Code Playgroud)

因此,现在当我在没有 appsettings.json 的情况下上传到 azure 时,我必须在 azure 的“应用程序设置”->“连接字符串”部分中配置连接。我遇到的部分问题是,当我git push从本地主机到天蓝色时,数据库的位置发生了变化。它被移动到d:\home\site\wwwroot. 我知道我必须更改连接字符串,但是我对我认为应该表明的各种更改失败了 - 我是否包含“数据源”部分?或者...我需要报价吗?我看到一篇相关的帖子,在对问题的评论中给出了一个有趣的答案,但这没有用。

将其输入到天蓝色的连接字符串部分的正确方法是什么? Azure 连接字符串条目

sqlite azure .net-core

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

从多台机器(多个操作系统)使用 System.Drawing 包

我们正在构建一个使用 System.Drawing 包的 .Net Core 2.0 C# Web 应用程序。

我在Mac上编写代码,但它也会在Windows机器上开发,并部署到Linux服务器上。

要在 OSX 上使用 System.Drawing,我必须将 runtime.osx.10.10-x64.CoreCompat.System.Drawing Nuget 包添加到我的项目依赖项中。

但该代码现在无法在 Windows 机器上运行。当尝试使用 Graphics(System.Drawing 的一部分)对象的 DrawString 方法时,我们得到 System.AccessViolationException。

所以,我的问题是解决这个问题的常用方法是什么?是否可以在这个多操作系统设置中使用 System.Drawing 类?

c# system.drawing multiplatform .net-core

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

具有多种预期类型的​​ XUnit Assert.IsType()

我需要检查三种可能的异常类型中的一种。如果抛出这些异常之一,则测试视为通过。我正在将[Theory]和用于[MemberData]多种场景。

[Theory]
[MemberData(nameof(GetInvalidMimeMessages))]
public async Task ProcessAsync_TestFail(MimeMessage message)
{
    var stub = Mock.Of<IOptions<ScrapyardFilesOptions>>(s => s.Value.ConnectionString == "UseDevelopmentStorage=true" && s.Value.Container == "exchange");
    var loggerMock = new Mock<ILogger<ScrapyardFilesHandler>>(MockBehavior.Loose);
    var scrapyard = new ScrapyardFilesHandler(loggerMock.Object, stub);
    var ex = await Assert.ThrowsAnyAsync<Exception>(() => scrapyard.ProcessAsync(message));

    // imagine solution somehow like that
    Assert.IsType( 
                    { 
                      typeof(NullReferenceException)    ||
                      typeof(KeyNotFoundException)      ||
                      typeof(InvalidOperationException) ||
                    },
                    ex); 
}

private static IEnumerable<object[]> GetInvalidMimeMessages()
{
    yield return new object[] { null };
    yield return new object[] { new MimeMessage() }; …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing xunit.net .net-core

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

在 C# 中编写异步方法的最佳方法

我有一个服务对象,它只是对 Microsoft SQL 数据库之上的 EF Core 存储库执行查询。我正在尝试将这些同步方法转换为异步版本。这是一种简化方法的示例......

同步版本

public List<Contact> GetContacts()
{
    var ret = this.dbContext.Contacts.ToList(); 
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

我已经看到了几种不创建异步方法的方法......再说一遍......我已经看到了几种不同的方法来说明你应该如何创建异步方法。我陷入了以下两种方法中的哪一种被认为是创建异步方法的“正确”或“最佳”方式之间。

异步版本 1

public Task<List<Contact>> GetContactsAsync()
{
    return Task.FromResult(this.dbContext.Contacts.ToList());
}
Run Code Online (Sandbox Code Playgroud)

或者

异步版本 2

public async Task<List<Contact>> GetContactsAsync()
{
    List<Contact> ret = null;

    await Task.Run(()=>{
        ret = this.dbContext.Contacts.ToList(); 
    });

    return ret;
}
Run Code Online (Sandbox Code Playgroud)

如果查询包含多行逻辑,则可能会使情况进一步复杂化。

这是包含更多细节的相同方法。如果您看到异步主题之外的问题,那么我很乐意在 PM 或其他内容中听到它们,但是对于这个线程,我想专注于等待/异步的东西。

完整的同步代码

public PaginationResult<Contact> GetContacts(PaginationSpec pagingSpec, List<Expression<Func<Models.Contact, bool>>> filter = null)
{
    IQueryable<Contact> query = ContactService.GetContactQuery(this.ctx);

    if (filter != null && filter.Count > 0)
    { …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous async-await .net-core

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

在只返回 Task 的异步方法上使用 await

在我的 ASP.NET Core 应用程序中,我以以下形式创建了几个(十几个)方法

public async Task DoStuff() 
{ 
   // ...
}
Run Code Online (Sandbox Code Playgroud)

所以,没有返回类型。

后来,我意识到我不小心忘记在调用方方法中到处包含此类方法(显然没有 async 关键字,因为异步“僵尸病毒”还没有传播那么远)。

在执行过程中,没有任何不良后果。

问题是,当这种事情发生时,Visual Studio 也不会生成任何警告消息,我问自己,在这种情况下,实际上是否存在忽略等待的危险?我知道 await 应该自然地应用于每个异步方法,但是当调用者实际上没有可使用的返回值时,我真的不明白这背后的原因。也许有捕获异常的东西?

我还没有找到任何明确的答案,因为一般声明是“只包含等待”。不管你信不信,这个异步/等待的东西,我相对较新,不时地反复咬我。

.net c# asynchronous async-await .net-core

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

Webclient 在 .NET Core/5 中失败,但在 .NET 框架中没有

这里有一个奇怪的...我有以下 C# 代码:

static void Main(string[] args)
{
    try
    {
        var url = "https://www.nordea.com/wemapp/api/fi/lists/currency/electronicExchangeFI.dat";
        var result = DownloadData(url);
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
        throw;
    }
}

private static string DownloadData(string url)
{
    var webClient = new WebClient();
    byte[] xmlData = webClient.DownloadData(url);
    webClient.Dispose();
    string data = string.Empty;
    if (xmlData.Length > 0)
    {
        data = System.Text.Encoding.Default.GetString(xmlData);
    }
    return data;
}
Run Code Online (Sandbox Code Playgroud)

使用这个特定的网站(一些汇率数据),上述作为 .NET Core/5 控制台应用程序失败,但它在 .NET Framework (4.7) 中按预期工作

在 .NET Core 中,我在方法上遇到以下异常webClient.DownloadData(url);-

WebClient 请求期间发生异常。

内部异常是

响应提前结束,预计至少有 1 个额外字节。


我也试过使用, …

c# .net-core

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

从控制台应用程序中的主要方法进行 DI

我有一堂课

public class A
{
    public A(IB b)
    {
    }

    public void Method1()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)
class Program
{
     static void Main(string[] args)
     {
         var serviceProvider = new ServiceCollection()
            .AddSingleton<IB,B>()
            .BuildServiceProvider();
        //How to call Method1 of classA
        classA a = new classA(); 
     }
}
Run Code Online (Sandbox Code Playgroud)

如何Method1()Main方法调用?

我收到一个编译时错误,因为“不存在重载方法”。

c# .net-core

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

来自 MSDN 的基本 HTTP 客户端代码无法获取结果

我正在尝试运行 HttpClient 类的简单 Msdn 文章: 在 .Net Core 控制台应用程序中创建 Http 客户端

不幸的是,它根本不起作用并退出应用程序。

在此处输入图片说明

输出中没有任何内容,只是在客户端调用中被吹走。

c# httpclient console-application .net-core

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

如何在 FromSqlRaw 查询中转义 { 字符

在使用 Npsql EF Core 数据提供程序的 EF Core 中,查询如

await ctx.Doc.FromSqlRaw(@"select * from Doc where id=any('{1,2,3}')");
Run Code Online (Sandbox Code Playgroud)

抛出错误

索引(从零开始)必须大于或等于零且小于参数列表的大小。

如何在查询中使用{}字符以使它们不被视为参数?

npgsql entity-framework-core .net-core asp.net-core

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

TaskContinuations 与异步 lambdas 同步运行

如果我们有 aaa 任务,并且为该任务创建一个延续(通过ContinueWithTaskContinuationOptions.RunSynchronously,如果正在执行的方法ContinueWith如下:

static async Task SimpleMethodContinuationAsync(Task antecedentTask, object state)
{
    // some very lightweight, thread-safe synchronous code.
    await Task.Delay(5000); // Simulate async work.
    // continuation of some more very lightweight, thread-safe synchronous code.
}
Run Code Online (Sandbox Code Playgroud)

await-之后的部分会有效释放开始执行任务延续的线程吗?这个续篇的其余部分将在哪个线程上继续?

SynchronizationContext上面的continuation的先行任务没有礼物时会问这个问题,但我听说SynchronizationContext不流经ContinueWith方法调用?真的吗?

c# asynchronous task-parallel-library async-await .net-core

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