لقد أخذت للتو مشروع VS 2015 وقمت بتجميعه ونشره في Lambda باستخدام VS 2017.
هذه هي النتيجة:
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
Exception has been thrown by the target of an invocation.: TargetInvocationException
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.AspNetCore.Hosting.Internal.ConfigureServicesBuilder.Invoke(Object instance, IServiceCollection exportServices)
at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices()
at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
at Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction..ctor()
The given key was not present in the dictionary.: KeyNotFoundException
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.ComputeClassification(String dependency)
at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.ComputeClassification(String dependency)
at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.ComputeClassification(String dependency)
at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.ComputeClassification(String dependency)
at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.<GetCandidates>d__4.MoveNext()
at System.Linq.Enumerable.<SelectManyIterator>d__157`2.MoveNext()
at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager(IServiceCollection services)
at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection services)
at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddMvc(IServiceCollection services)
مرحبًا genifycom ، هل يمكنك مشاركة ملف csproj لمشروعك؟
أحصل على نفس الخطأ من AddMvc () عندما أنشر من VS2017.
هل يمكنك توفير ملف csproj لمشروعك؟
قد أكون قادرًا على إنشاء نسخة يمكن مشاركتها ، وتفضيل طريقة المشاركة؟
سيكون مستودع GitHub مع الكود القابل لإعادة الإنتاج فيه جيدًا. كلما كانت الشفرة أقل دخلاً ، كان من الأسهل علينا تحديد المشكلة.
لقد قمت للتو بإنشائه باستخدام yeoman على mac. ثم قم بتحويل المشروع إلى csproj باستخدام dotnet migrate
. عندما يتم نشره واستدعائه ، أحصل على الاستثناء التالي:
{
"errorType": "LambdaException",
"errorMessage": "An exception was thrown when the constructor for type 'PreviewAspNetCoreWebAPI.LambdaEntryPoint' was invoked. Check inner exception for more details.",
"cause": {
"errorType": "TargetInvocationException",
"errorMessage": "Exception has been thrown by the target of an invocation.",
"stackTrace": [
"at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)",
"at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)",
"at System.Activator.CreateInstance(Type type, Boolean nonPublic)",
"at System.Activator.CreateInstance(Type type)"
],
"cause": {
"errorType": "TargetInvocationException",
"errorMessage": "Exception has been thrown by the target of an invocation.",
"stackTrace": [
"at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)",
"at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)",
"at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)",
"at Microsoft.AspNetCore.Hosting.Internal.ConfigureServicesBuilder.Invoke(Object instance, IServiceCollection exportServices)",
"at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices()",
"at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()",
"at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()",
"at Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction..ctor()"
],
"cause": {
"errorType": "KeyNotFoundException",
"errorMessage": "The given key was not present in the dictionary.",
"stackTrace": [
"at System.Collections.Generic.Dictionary`2.get_Item(TKey key)",
"at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.ComputeClassification(String dependency)",
"at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.ComputeClassification(String dependency)",
"at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.ComputeClassification(String dependency)",
"at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.ComputeClassification(String dependency)",
"at Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider.CandidateResolver.<GetCandidates>d__4.MoveNext()",
"at System.Linq.Enumerable.<SelectManyIterator>d__157`2.MoveNext()",
"at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()",
"at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager(IServiceCollection services)",
"at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection services)",
"at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddMvc(IServiceCollection services)",
"at PreviewAspNetCoreWebAPI.Startup.ConfigureServices(IServiceCollection services) in /PreviewAspNetCoreWebAPI/src/PreviewAspNetCoreWebAPI/Startup.cs:line 34"
]
}
}
}
}
شكرًا لك على إعادة إنتاج KraigM
هذه قضية حظر بالنسبة لي حاليا.
الحل الخاص بي: افتح ملف csproj واضبط PreserveCompilationContext على false.
<PreserveCompilationContext>false</PreserveCompilationContext>
المزيد من التوضيح:
عينت مشاريع VS 2017 PreserveCompilationContext إلى true. هذا يعني أنه عند النشر / النشر ، يرسل VS مجلد "ref" به الكثير من التجميعات نفسها مثل مجلد النشر الجذر. أظن أن شيئًا ما يقوم بفحص جميع التجميعات بشكل متكرر ويفشل ذلك ، لكنني لست متأكدًا على الإطلاق. كل ما أعرفه حتى الآن هو أنني غيرت هذا الإعداد وهو يعمل الآن ، وأعتقد أنني سأشارك هذا لمعرفة ما إذا كان يساعد الآخرين.
DohMoose الذي
DohMoose رائع ، هذا حل المشكلة بالنسبة لي أيضًا. شكرا لك.
للسياق ، قمت بالتبديل من نشر VS2015 إلى VS2017 وكنت أتلقى هذا الخطأ عند الإطلاق.
التعليق الأكثر فائدة
الحل الخاص بي: افتح ملف csproj واضبط PreserveCompilationContext على false.
<PreserveCompilationContext>false</PreserveCompilationContext>
المزيد من التوضيح:
عينت مشاريع VS 2017 PreserveCompilationContext إلى true. هذا يعني أنه عند النشر / النشر ، يرسل VS مجلد "ref" به الكثير من التجميعات نفسها مثل مجلد النشر الجذر. أظن أن شيئًا ما يقوم بفحص جميع التجميعات بشكل متكرر ويفشل ذلك ، لكنني لست متأكدًا على الإطلاق. كل ما أعرفه حتى الآن هو أنني غيرت هذا الإعداد وهو يعمل الآن ، وأعتقد أنني سأشارك هذا لمعرفة ما إذا كان يساعد الآخرين.