Azure 函数中的主构造函数

问题描述 投票:0回答:0

我有一个天蓝色的功能,它工作正常,我已将其更改为主要构造函数,它在我的本地环境中工作得很好,但在使用

部署它时

az 函数应用

我收到错误

"ExceptionMessage":"尝试创建'PushDeploymentController'类型的控制器时发生错误。请确保该控制器具有无参数公共构造函数。","ExceptionType":"System.InvalidOperationException","StackTrace":" at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage请求,HttpControllerDescriptor控制器描述符,类型controllerType) 在System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage请求) 在 System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()","InnerException":{"Message":"发生错误。","ExceptionMessage":"访问路径 'C:\home\ LogFiles\kudu\deployment' 被拒绝。","ExceptionType":"System.UnauthorizedAccessException","StackTrace":" 在 System.IO.__Error.WinIOError(Int32 errorCode, String MaybeFullPath) 在 System.IO.Directory.InternalCreateDirectory(字符串 fullPath,字符串路径,对象 dirSecurityObj,布尔值 checkHost) 在 System.IO.Directory.InternalCreateDirectoryHelper(字符串路径,布尔值 checkHost) 在 System.IO.Directory.CreateDirectory(字符串路径) 在 System.IO.Abstractions.DirectoryWrapper.CreateDirectory(字符串路径) 在 Kudu.Core.Infrastruct.FileSystemHelpers.CreateDirectory(字符串路径) 在 Kudu.Core.Environment.get_DeploymentTracePath() 在C:\ __w \ s \ Kudu.Services.Web \ App_Start \ NinjectServices.cs中的Kudu.Services.Web.App_Start.NinjectServices.GetLogger(IEnvironment环境,IKernel内核):第807行 在C:\__w \s\Kudu.Services.Web\App_Start\NinjectServices.cs中的Kudu.Services.Web.App_Start.NinjectServices.<>c__DisplayClass10_0.b__13(IContext context):第279行 在 Ninject.Activation.Providers.CallbackProvider

1.CreateInstance(IContext context)\r\n   at Ninject.Activation.Provider
1.Create(IContext 上下文) 在 Ninject.Activation.Context.ResolveInternal(对象范围) 在 Ninject.Activation.Context.Resolve() 在 Ninject.KernelBase.<>c__DisplayClass15.b__f(IBinding 绑定) 在 System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext()\r\n   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable
1 源) 在 Ninject.Planning.Targets.Target
1.GetValue(Type service, IContext parent)\r\n   at Ninject.Planning.Targets.Target
1.ResolveWithin(IContext 父级) 在 Ninject.Activation.Providers.StandardProvider.GetValue(IContext 上下文,ITarget 目标) 在 Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass4.b__2(ITarget 目标) 在 System.Linq.Enumerable.WhereSelectArrayIterator
2.MoveNext()\r\n   at System.Linq.Buffer
1..ctor(IEnumerable
1 source)\r\n   at System.Linq.Enumerable.ToArray[TSource](IEnumerable
1 源) 在 Ninject.Activation.Providers.StandardProvider.Create(IContext 上下文) 在 Ninject.Activation.Context.ResolveInternal(对象范围) 在 Ninject.Activation.Context.Resolve() 在 Ninject.KernelBase.<>c__DisplayClass15.b__f(IBinding 绑定) 在 System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext()\r\n   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable
1 源) 在 Ninject.Planning.Targets.Target
1.GetValue(Type service, IContext parent)\r\n   at Ninject.Planning.Targets.Target
1.ResolveWithin(IContext 父级) 在 Ninject.Activation.Providers.StandardProvider.GetValue(IContext 上下文,ITarget 目标) 在 Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass4.b__2(ITarget 目标) 在 System.Linq.Enumerable.WhereSelectArrayIterator
2.MoveNext()\r\n   at System.Linq.Buffer
1..ctor(IEnumerable
1 source)\r\n   at System.Linq.Enumerable.ToArray[TSource](IEnumerable
1 源) 在 Ninject.Activation.Providers.StandardProvider.Create(IContext 上下文) 在 Ninject.Activation.Context.ResolveInternal(对象范围) 在 Ninject.Activation.Context.Resolve() 在 Ninject.KernelBase.<>c__DisplayClass15.b__f(IBinding 绑定) 在 System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext()\r\n   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable
1 源) 在 Ninject.Planning.Targets.Targe

更改前我的代码:

public class GreatClass
{
    private ICustomService _customService;

    public GreatClass(ICustomService customService)
    {
        _customService = customService;
    }

    [FunctionName("MyFunc")]
    public async Task Run([TimerTrigger("%RunFrequency%", RunOnStartup = true)]TimerInfo myTimer,
        // ICustomService customService, // Incorrect!
        ILogger log)
    {
        //Logic
    }
}

更改后我的功能:

public class GreatClass(ICustomService customService)
{
    
    [FunctionName("MyFunc")]
    public async Task Run([TimerTrigger("%RunFrequency%", RunOnStartup = true)]TimerInfo myTimer,
        // ICustomService customService, // Incorrect!
        ILogger log)
    {
        //Logic
    }
}
azure-devops azure-functions azure-pipelines azure-pipelines-yaml primary-constructor
© www.soinside.com 2019 - 2024. All rights reserved.