فحص مرجعي فارغ مطلوب لتعداد مجموعة داخل مجموعة انعكسية؟
-
03-10-2019 - |
سؤال
أنا أواجه سلوكًا غريبًا جدًا في C#/. Net 3.5 ...
أنا أكتب فصلًا يربط خط أنابيب لتحميل نظام إدارة المحتوى. ينفذ CMS هذا الخطاف عبر الانعكاس.
لسبب غير معروف الكود التالي فشل بواسطة رمي nullref ("الملفات" هو httpfileCollection).
foreach (var fileKey in args.Files.AllKeys)
{
// Do Stuff
}
بعد إضافة فحص nullref قبل أن يصنع البيان الحلقة ينجح. الملفات التي تم تحميلها متطابقة في كلتا الحالتين. لا يتم تنفيذ بيان الإرجاع أبدًا ، نظرًا لأن الشرط الفارغ يفشل.
if (args.Files == null ) return;
foreach (var fileKey in args.Files.AllKeys)
{
// Do Stuff
}
أنا متعثر تماما من هذا. أيه أفكار؟
تتبع مكدس كامل
** Exception: System.Web.HttpUnhandledException **
Message: Exception of type 'System.Web.HttpUnhandledException' was thrown.
Source: System.Web
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.sitecore_shell_applications_flashupload_advanced_uploadtarget_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
** Nested Exception **
Exception: System.Reflection.TargetInvocationException
Message: Exception has been thrown by the target of an invocation.
Source: mscorlib
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj)
at Sitecore.Pipelines.Processor.Invoke(PipelineArgs args)
at Sitecore.Nexus.Pipelines.NexusPipelineApi.Resume(PipelineArgs args, Pipeline pipeline)
at Sitecore.Pipelines.Pipeline.Resume()
at Sitecore.Pipelines.Pipeline.DoStart(PipelineArgs args)
at Sitecore.Pipelines.Pipeline.Start(PipelineArgs args, Boolean atomic)
at Sitecore.Pipelines.Pipeline.Start(PipelineArgs args)
at Sitecore.Shell.Applications.FlashUpload.Advanced.UploadTarget.HandleUpload()
at Sitecore.Shell.Applications.FlashUpload.Advanced.UploadTarget.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
** Nested Exception **
Exception: System.NullReferenceException
Message: Object reference not set to an instance of an object.
Source: Sitecore.CustomExtensions
at Sitecore.CustomExtensions.StreamingMediaUploader.Process(UploadArgs args) in C:\...\Sitecore.CustomExtensions\StreamingMediaUploader.cs:line 33
لا يوجد حل صحيح
نصائح أخرى
مجرد تخمين ، ولكن ربما يكون هناك بعض السلوك غير المتوقع (ربما خطأ) في CMS. علة أم لا ، الخاص بك عقد مع CMS لم يتم تعريفها بالكامل.
السبب في تطابق الملفات التي تم تحميلها هو أن طريقتك قد تم استدعاؤها عدة مرات مع استثناء المكالمة النهائية.
بالنظر إلى أنك تعمل مع تطبيق لا تتحكم فيه ، فإن الحل الخاص بك صحيح - يجب عليك التحقق من كل ما تقدمه قبل استخدامه.