首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SignalR.Client时启动时出错

使用SignalR.Client时启动时出错
EN

Stack Overflow用户
提问于 2021-09-13 10:21:16
回答 2查看 300关注 0票数 0

我有一个功能,它可以工作,现在我需要安装Microsoft.AspNetCore.SignalR.Client作为依赖。问题是,在安装和执行所有设置之后,我无法运行该函数。

我就是这样运行

代码语言:javascript
复制
CLI_DEBUG=1 func start --functions MyHttpTrigger --csharp --verbose

的错误我得到了

代码语言:javascript
复制
[2021-09-10T14:39:16.812Z] A host error has occurred during startup operation 'b567a982-7518-4be4-ac01-a800c7ca491e'.
[2021-09-10T14:39:16.813Z] System.MissingMethodException: Method not found: 'Microsoft.Extensions.Logging.ILoggingBuilder Microsoft.Extensions.Logging.ConsoleLoggerExtensions.AddConsole(Microsoft.Extensions.Logging.ILoggingBuilder)'.
[2021-09-10T14:39:16.813Z]    at Startup.<>c.<Configure>b__0_0(ILoggingBuilder options)
[2021-09-10T14:39:16.813Z]    at Microsoft.Extensions.DependencyInjection.LoggingServiceCollectionExtensions.AddLogging(IServiceCollection services, Action`1 configure)
[2021-09-10T14:39:16.813Z]    at Startup.Configure(IFunctionsHostBuilder builder) in /Users/.../Startup.cs:line 29
[2021-09-10T14:39:16.813Z]    at Microsoft.Azure.Functions.Extensions.DependencyInjection.FunctionsStartup.Configure(IWebJobsBuilder builder)
[2021-09-10T14:39:16.813Z]    at Microsoft.Azure.WebJobs.WebJobsBuilderExtensions.ConfigureStartup(IWebJobsStartup startup, WebJobsBuilderContext context, IWebJobsBuilder builder) in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Hosting\WebJobsBuilderExtensions.cs:line 168
[2021-09-10T14:39:16.813Z]    at Microsoft.Azure.WebJobs.WebJobsBuilderExtensions.ConfigureAndLogUserConfiguredServices(IWebJobsStartup startup, WebJobsBuilderContext context, IWebJobsBuilder builder, ILoggerFactory loggerFactory) in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Hosting\WebJobsBuilderExtensions.cs:line 131
[2021-09-10T14:39:16.813Z]    at Microsoft.Azure.WebJobs.WebJobsBuilderExtensions.UseWebJobsStartup(IWebJobsBuilder builder, Type startupType, WebJobsBuilderContext context, ILoggerFactory loggerFactory) in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Hosting\WebJobsBuilderExtensions.cs:line 118
[2021-09-10T14:39:16.813Z]    at Microsoft.Azure.WebJobs.WebJobsBuilderExtensions.UseExternalStartup(IWebJobsBuilder builder, IWebJobsStartupTypeLocator startupTypeLocator, WebJobsBuilderContext context, ILoggerFactory loggerFactory) in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Hosting\WebJobsBuilderExtensions.cs:line 211
[2021-09-10T14:39:16.813Z]    at Microsoft.Azure.WebJobs.Script.ScriptHostBuilderExtensions.<>c__DisplayClass7_0.<AddScriptHostCore>b__1(HostBuilderContext context, IWebJobsBuilder webJobsBuilder) in D:\a\1\s\src\WebJobs.Script\ScriptHostBuilderExtensions.cs:line 207
[2021-09-10T14:39:16.813Z]    at Microsoft.Extensions.Hosting.WebJobsHostBuilderExtensions.<>c__DisplayClass5_0.<ConfigureWebJobs>b__1(HostBuilderContext context, IServiceCollection services) in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Hosting\WebJobsHostBuilderExtensions.cs:line 56
[2021-09-10T14:39:16.813Z]    at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider()
[2021-09-10T14:39:16.813Z]    at Microsoft.Extensions.Hosting.HostBuilder.Build()
[2021-09-10T14:39:16.813Z]    at Microsoft.Azure.WebJobs.Script.WebHost.DefaultScriptHostBuilder.BuildHost(Boolean skipHostStartup, Boolean skipHostConfigurationParsing) in D:\a\1\s\src\WebJobs.Script.WebHost\DefaultScriptHostBuilder.cs:line 59
[2021-09-10T14:39:16.813Z]    at Microsoft.Azure.WebJobs.Script.WebHost.WebJobsScriptHostService.BuildHost(Boolean skipHostStartup, Boolean skipHostJsonConfiguration) in D:\a\1\s\src\WebJobs.Script.WebHost\WebJobsScriptHostService.cs:line 542
[2021-09-10T14:39:16.813Z]    at Microsoft.Azure.WebJobs.Script.WebHost.WebJobsScriptHostService.UnsynchronizedStartHostAsync(ScriptHostStartupOperation activeOperation, Int32 attemptCount, JobHostStartupMode startupMode) in D:\a\1\s\src\WebJobs.Script.WebHost\WebJobsScriptHostService.cs:line 244
System.ArgumentNullException: Value cannot be null. (Parameter 'provider')
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Azure.Functions.Cli.Actions.HostActions.StartHostAction.RunAsync() in D:\a\1\s\src\Azure.Functions.Cli\Actions\HostActions\StartHostAction.cs:line 325
   at Azure.Functions.Cli.ConsoleApp.RunAsync[T](String[] args, IContainer container) in D:\a\1\s\src\Azure.Functions.Cli\ConsoleApp.cs:line 66

Setup.cs

代码语言:javascript
复制
[assembly: FunctionsStartup(typeof(PremiumAds.Jobs.Functions.Startup))]

namespace PremiumAds.Jobs.Functions
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            string connection = Environment.GetEnvironmentVariable("SqlConnectionString");

            builder.Services.AddLogging(options => options.AddConsole());

            builder.Services.AddDbContext<BaseContext>(options => options.UseSqlServer(connection), ServiceLifetime.Transient);

            builder.Services.AddTransient((container) =>
                {
                    var context = container.GetService<BaseContext>();
                    var stack = container.GetRequiredService<ILogger<StackService>>();
                    return new StackService(stack, new StackConfiguration(context), null);
                });
        }
    }
}

我的函数

代码语言:javascript
复制
[FunctionName("MyHttpTrigger")]
public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, ILogger log)
{
    await SignalRService.Publish("test title", "test message");
    return HttpEmptyResponse();
}

服务

代码语言:javascript
复制
public static class SignalRService
{
    public static async Task Publish(string title, string message)
    {
        var connection = new HubConnectionBuilder()
            .WithUrl("...")
            .Build();

        await connection.StartAsync();

        await connection.InvokeAsync("Test", title, message);
    }
}

.csproj

代码语言:javascript
复制
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.13" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.10">
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.5.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator" Version="1.2.3" />

https://github.com/Azure/azure-functions-dotnet-extensions/issues/64

EN

回答 2

Stack Overflow用户

发布于 2021-09-13 15:12:46

在StartUp方法中,确实要使用控制台日志记录吗?

代码语言:javascript
复制
builder.Services.AddLogging(options => options.AddConsole());

抱怨的部分是这个部分,它可能缺少控制台logg的扩展名或名称空间。我不确定这是为什么,您确定microsoft azure函数支持这种类型的日志记录吗?

看一看这里,也可以帮我看一下这里

票数 0
EN

Stack Overflow用户

发布于 2021-10-05 15:24:18

正如前面提到的答案,下面一行添加了控制台日志记录:

builder.Services.AddLogging(options => options.AddConsole());

如果不希望控制台日志记录,请删除AddConsole()选项。如果您确实想要控制台日志记录,那么必须添加以下nuget包:"Microsoft.Extensions.Logging.Console

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69161049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档