我有一个天蓝色的功能,它工作正常,我已将其更改为主要构造函数,它在我的本地环境中工作得很好,但在使用
部署它时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.Create(IContext 上下文) 在 Ninject.Activation.Context.ResolveInternal(对象范围) 在 Ninject.Activation.Context.Resolve() 在 Ninject.KernelBase.<>c__DisplayClass15.b__f(IBinding 绑定) 在 System.Linq.Enumerable.WhereSelectEnumerableIterator1.CreateInstance(IContext context)\r\n at Ninject.Activation.Provider
1 源) 在 Ninject.Planning.Targets.Target2.MoveNext()\r\n at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable
1.ResolveWithin(IContext 父级) 在 Ninject.Activation.Providers.StandardProvider.GetValue(IContext 上下文,ITarget 目标) 在 Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass4.b__2(ITarget 目标) 在 System.Linq.Enumerable.WhereSelectArrayIterator1.GetValue(Type service, IContext parent)\r\n at Ninject.Planning.Targets.Target
1..ctor(IEnumerable2.MoveNext()\r\n at System.Linq.Buffer
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.WhereSelectEnumerableIterator1 source)\r\n at System.Linq.Enumerable.ToArray[TSource](IEnumerable
1 源) 在 Ninject.Planning.Targets.Target2.MoveNext()\r\n at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable
1.ResolveWithin(IContext 父级) 在 Ninject.Activation.Providers.StandardProvider.GetValue(IContext 上下文,ITarget 目标) 在 Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass4.b__2(ITarget 目标) 在 System.Linq.Enumerable.WhereSelectArrayIterator1.GetValue(Type service, IContext parent)\r\n at Ninject.Planning.Targets.Target
1..ctor(IEnumerable2.MoveNext()\r\n at System.Linq.Buffer
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.WhereSelectEnumerableIterator1 source)\r\n at System.Linq.Enumerable.ToArray[TSource](IEnumerable
1 源) 在 Ninject.Planning.Targets.Targe2.MoveNext()\r\n at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable
更改前我的代码:
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
}
}