নিনজেক্ট + এমভিসি 3 = অবৈধ অপারেশন এক্সেক্সশন: সিকোয়েন্সে কোনও উপাদান নেই


90

আমি একটি নতুন এমভিসি 3 প্রকল্প তৈরি করেছি, এফ 5 চাপুন, নমুনা পৃষ্ঠাটি দেখেছি।

তারপরে আমি নিনজিট.এমভিসি এক্সটেনশনটি পেতে নুগেট ব্যবহার করেছি । আমি আমার গ্লোবাল.অ্যাস্যাক্সটি নিনজ ডকুমেন্টেশন অনুসারে, এমভিসি 3 অ্যাপ্লিকেশনটি কীভাবে সেটআপ করব :

public class MvcApplication : NinjectHttpApplication
{
   public static void RegisterGlobalFilters(GlobalFilterCollection filters)
   {
       filters.Add(new HandleErrorAttribute());
   }

   public static void RegisterRoutes(RouteCollection routes)
   {
       routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

       routes.MapRoute(
           "Default", // Route name
           "{controller}/{action}/{id}", // URL with parameters
           new { controller = "Home", action = "Index", 
               id = UrlParameter.Optional });
   }

   protected override IKernel CreateKernel()
   {
       var kernel = new StandardKernel();
       kernel.Load(Assembly.GetExecutingAssembly());
       return kernel;
   }

   protected override void OnApplicationStarted()
   {
       base.OnApplicationStarted();

       AreaRegistration.RegisterAllAreas();
       RegisterGlobalFilters(GlobalFilters.Filters);
       RegisterRoutes(RouteTable.Routes);
   }
}

এখন আমি যখন অ্যাপটি চালাচ্ছি, আমি নিম্নলিখিত ব্যতিক্রম সহ মৃত্যুর হলুদ পর্দাটি পেয়েছি:

অবৈধ অপারেশন এক্সসেপশন - সিকোয়েন্সে কোনও উপাদান নেই।

System.Linq.Enumerable.Single (...) এ

Ninject.Web.Mvc.Bootstrapper.Initialize (...) লাইন 67 এ।

এবং নিশ্চিতভাবেই, সেই ফাইলটির 67 লাইন কল করে calls সিঙ্গল (), এভাবে ব্যতিক্রম ছুঁড়ে।

আমি কি ভুল করছি?

উত্তর:


101

আপনি লক্ষ্য করতে পারেন ninject.mvc3নুগেট ইনস্টল করার পরে App_Startআপনার প্রকল্পের ভিতরে একটি NinjectMVC3.csফাইল রয়েছে এমন একটি সাবফোল্ডার তৈরি হয়েছে । এই ফোল্ডারটি মুছুন এবং আবার চেষ্টা করুন। সুতরাং আমি অনুসরণ করা পদক্ষেপ এখানে:

  1. ডিফল্ট টেম্পলেটটি ব্যবহার করে একটি নতুন এএসপি.নেট এমভিসি 3 প্রকল্প তৈরি করুন
  2. প্যাকেজ ম্যানেজার কনসোল উইন্ডোটি আনুন (দেখুন -> অন্যান্য উইন্ডোজ -> প্যাকেজ ম্যানেজার কনসোল)
  3. প্রকার install-package ninject.mvc3কমান্ড লাইনে করুন
  4. এর মধ্যে ডিফল্ট কোডটি প্রতিস্থাপন করুন Global.asaxআপনার প্রশ্নের কোডের সাথে
  5. মুছুন AppStartপ্যাকেজ ইনস্টলের সময় তৈরি সাবফোল্ডারটি
  6. অ্যাপ্লিকেশন চালান
  7. /Home/Indexআপনার গুগল ক্রোম ওয়েব ব্রাউজারে খোলা ডিফল্ট পৃষ্ঠার সৌন্দর্য উপভোগ করুন :-)

4
কাজ করেছে। কেন জানি না। আমি বুঝতে না পেরে বাগগুলি ঠিক করতে পছন্দ করি না ... তবে ধন্যবাদ, এটি আমাকে অবরুদ্ধ করে।
এহুদা গ্যাব্রিয়েল হিমাঙ্গো

19
এটি একটি বাগ নয়। নিউগেট প্যাকেজটি কেবল কার্নেল সেটআপ করার জন্য অন্য একটি উপায় ব্যবহার করে যাতে এটি Global.asax পরিবর্তন করতে না পারে। আপনার অ্যাপ্লিকেশন একই সাথে দু'ভাবে ব্যবহার করেছে যা দু'বার শুরু হওয়ার সাথে সাথে এক্সটেনশনটিকে একটি অবৈধ অবস্থায় ফেলেছে।
রেমো গ্লার

রেমো সহায়ক ব্যাখ্যার জন্য আপনাকে ধন্যবাদ।
এহুদা গ্যাব্রিয়েল হিমাঙ্গো

4
App_Start ফোল্ডারটি মোছা না করে এটি সমাধানের সঠিক উপায় কী ?
রায়ান লুন্ডি

12
@ কিরলেসা, গ্লোবাল.অ্যাসাক্সকে (যেমন থেকে প্রাপ্ত নয় NinjectHttpApplication) রেখে এবং ~/App_Start/NinjectMVC3.csফাইলটিতে ( কারেন্ট ) কার্নেলটি কনফিগার করে RegisterServices
দারিন দিমিত্রভ

120

আমাকে আরও এই আশা যোগ করতে হবে যে অন্য কেউ এই সমস্যাটি আরও দ্রুত সমাধান করবে এবং আমি প্রায় যেমন করেছিলাম তেমনই তাদের মাথার চুলের স্ট্র্যান্ড টানতে চাই না।

নতুন ব্যবসার শর্তগুলির সাথে মেলে আমার প্রকল্পের সমস্ত কিছুর নতুন নামকরণ করা দরকার। আমি সর্বত্র নেমস্পেস পরিবর্তন করেছি এবং আমি এমনকি সমাবেশের নাম (ডান ক্লিক প্রকল্প> বৈশিষ্ট্য> অ্যাপ্লিকেশন ট্যাব) পরিবর্তন করেছি যাতে উত্পন্ন সমাবেশটি নতুন নামকরণ কনভেনশনটির সাথে মেলে। অ্যাসেম্বলি নামকরণের ফলে নিিনজেকে খুব রেগে গেল!

অ্যাসেমব্লিকে নতুন নামকরণের মাধ্যমে যা নতুন নাম সহ একটি নতুন ফাইল উত্পন্ন হয় তা তৈরি করা হয়েছিল যখন আমরা সংকলন করেছি। তবে পুরনো নাম সহ পুরানো ফাইলটি এখনও বিন ডিরেক্টরিতে ছিল! আপনার যদি অ্যাপ_স্টার্টে যুক্ত ক্লাসের মাধ্যমে নিনজেক্ট অ্যাক্টিভেটিং থাকে তবে এই অ্যাক্টিভেশন ক্লাসটি দুটি বিধানসভায় (পুরানো এবং নতুন নতুন নামকরণকারী) যোগদান করা হবে। কীভাবে বা কেন আমাকে জিজ্ঞাসা করবেন না তবে এটি করে এবং এটি আপনাকে এই "ইতিমধ্যে প্রাথমিক" ত্রুটি দেয়।

এমনকি সমাধানের সমাধানও কাজ করে না কারণ ভিজ্যুয়াল স্টুডিও কেবল এটি তৈরি করছে এমন বাইনারিগুলি সরিয়ে ফেলবে যা নতুন নামকরণ করা হবে। এটি কেবল সেখানে বসে পুরানোদের একা ফেলে দেয়।

অন্য কিছু করার আগে আপনার বিন ফোল্ডারটি মুছুন! আমি আশা করি এটি মূল্যবান কাজের সময় নষ্ট করা থেকে অন্য কাউকে বাঁচায়!


7
ঠিক আছে, আমি আপনার উত্তরের হোঁচট খেয়ে 40 মিনিটের আগে নষ্ট হয়েছি। ধন্যবাদ অ্যালেক্স!
ম্যাক্সিম ভি ভি পাভলভ

4
গৃহীত উত্তরটি আমার পক্ষে তা করে নি তবে এইটি করেছিল। ধন্যবাদ অ্যালেক্স
প্লাক

4
তোমাকে অনেক ধন্যবাদ! আমি এই ইস্যুতে এক ঘন্টা জ্বালিয়েছি, এবং আপনার প্রতিক্রিয়া ছাড়াই আরও অনেক কিছু পুড়িয়ে ফেলতাম। এটি যথাযথ প্রশ্নের সঠিক উত্তর হওয়া উচিত।
ডগ

4
উজ্জ্বল! ধন্যবাদ অ্যালেক্স এর তলায় যেতে চেষ্টা করে আমি অনেক সময় নষ্ট করেছি, আপনার সমাধানটি নিখুঁতভাবে কাজ করেছে।
আপোজি

4
এটি দুর্দান্ত ছিল। তোমাকে অনেক ধন্যবাদ. আমি ঠিক এটি করেছি, একটি পুরো নেমস্পেসের নাম বদলেছে এবং এমনকি আমার সমস্যাগুলি এই বিষয়টিকেও দায়ী করেনি যে সমাবেশটি এখনও বাক্সে নির্মিত হয়েছিল। আপনাকে অনেক ধন্যবাদ!
ডেভিড এল

23

এমভিসি 3 অ্যাপ্লিকেশন সেটআপ করার উভয় উপায় দেখানোর জন্য আমি আপনার প্রশ্নের সাথে উইকি সংযুক্ত ডকুমেন্টেশন আপডেট করেছি। আমি দ্বিতীয় বিকল্পটি ব্যবহার করার পরামর্শ দিচ্ছি যা নুগেটপ্যাকেজের জন্য পছন্দসই উপায়।

নিনজেক্টএইচটিপি অ্যাপ্লিকেশন থেকে প্রাপ্ত পরিবর্তে এটি অ্যাপস্টার্ট ফোল্ডারে নিনজেক্টএমভিসি.সি.এস ব্যবহার করছে যা প্যাকেজ ইনস্টলের সময় তৈরি করা হয়েছে। এটি সেই অবস্থান যেখানে আপনি কার্নেল তৈরি করেন এবং যেখানে আপনি আপনার মডিউলগুলি লোড করেন বা যেখানে আপনি বাইন্ডিংগুলি সংজ্ঞায়িত করেন।


রেমো খুব সাহায্যকারী। যেহেতু আমি ইতিমধ্যে একটি উত্তর চিহ্নিত করেছি, আমি কেবল আপনার আপভোট করব এবং সম্ভবত আপনার কয়েকজনকে আপগেট করব। উইকির উত্তর এবং আপডেট করার ক্ষেত্রে উপরে ওপারে যাওয়ার জন্য আপনাকে ধন্যবাদ।
এহুদা গ্যাব্রিয়েল হিমাঙ্গো

4

যেমন অ্যালেক্স ফোর্ড বলেছেন:

আমাকে আরও এই আশা যোগ করতে হবে যে অন্য কেউ এই সমস্যাটি আরও দ্রুত সমাধান করবে এবং আমি প্রায় যেমন করেছিলাম তেমনই তাদের মাথার চুলের স্ট্র্যান্ড টানতে চাই না।

আমার সেই সমস্যাটির একটি বিশেষ সংস্করণ ছিল যা নীচের মত সমাধান হতে পারে:

ব্যতিক্রমের বিবরণ: সিস্টেম.অনুষ্ঠানিক অপারেশন এক্সসেপশন: সিকোয়েন্সে কোনও উপাদান নেই

এই ত্রুটিটি App_Start / NinjectWebCommon.cs সহ 2 টি প্রকল্পের কারণে ঘটেছিল

ফাইলটি সরানো ত্রুটি দূর করে।

দ্রষ্টব্য: আপনি যদি নিনজেক্ট.ওয়েব.কমনকে নু-হচ্ছেন তবে আপনার শ্রেণি পাঠাগার প্রকল্পের জন্য আপনাকে নিনজেক্ট.ওয়েব.কমন অ্যাসেমব্লিকে উল্লেখ করতে হবে, আপনি নিরাপদে "অ্যাপ_সার্ট" ফোল্ডার এবং "NinjectWebCommon.cs" মুছে ফেলতে পারেন। এটি ওয়েব / ওয়েব এপিআই প্রকল্পগুলির জন্য বোঝানো হয়েছে।

> আসল ব্লগ এন্ট্রি দেখতে এখানে ক্লিক করুন <


আমার প্রকল্পগুলির নেমস্পেস পরিবর্তন করার পরে আমি আবারও আবার একই সমস্যায় পড়লাম। এখানে সমস্ত সমাধান সাহায্য করে নি। পরিস্কার করা ও পুনর্নির্মাণে কোনও লাভ হয়নি। তবে যা আমার প্রকল্পের বিন এবং আপত্তি ফোল্ডারগুলি মুছতে সহায়তা করেছিল। মনে হচ্ছে সেখানে এখনও পুরানো নেমস্পেস অংশটির কিছু অংশ আটকে আছে যা কোনও পরিষ্কারের সাথে মুছে ফেলা হয় না।
ওয়াও

হাই দা_ ওল্ফ, এটি। ধন্যবাদ. আপনি আমার সমস্যাটি সমাধান করেছেন
বিবেকদেব

2

আমার সমাধানটি হ'ল আমি অ্যাপ্লিকেশন স্টার্ট ফোল্ডার সম্পত্তি, নেমস্পেস সরবরাহকারীকে সত্য হিসাবে সেট করেছিলাম।

আমি এটিকে ভুয়াতে পরিবর্তন করেছিলাম যাতে পুনরায় ভাগ করা ফোল্ডারের কাঠামোর সাথে মেলে নয় এমন স্থানটি হাইলাইট না করে।


এটি আমার জন্য ছিল, আমাকে পাগল করে তুলছে।
রাশলেহপ

2

আরও একটি কারণ যুক্ত করতে চেয়েছিল ...

আমরা একাধিক প্রকল্পে নিনজেক্ট.এমভিসি 3 প্যাকেজটি ইনস্টল করেছি - যার মধ্যে একটি প্রকৃত এমভিসি আবেদনকারীর ছিল। তবে আমরা অ্যাপ_সার্ট ফোল্ডারটি সরাতে ভুলে গেছি।

রেফারেন্সড প্রকল্প থেকে App_Start ফোল্ডারটি সরানো সমস্যার সমাধান করেছে।


হ্যাঁ! ইহা ওইটাই ছিল! আমি ভুল করে অন্য একটি প্যারাকসে একটি দ্বিতীয় নিনেক্টেউবকমোন.সিএস ফাইল যুক্ত করেছি! এটি ছিল (এমভিসি 5 ব্যবহার করে)
জোস এ

1

@ শেভের উত্তরটি সামলানোর জন্য ... এটি আমার চূড়ান্ত সমস্যাও ছিল। যদি আপনি একটি অ্যাজুরে ওয়েবসাইটে (বর্তমানে অ্যাপসাইটের নাম দেওয়া হয়) মোতায়েন করছেন, তবে পুরানো ফাইলগুলি সরাতে আপনি প্রকাশের এই বাক্সটিতে ক্লিক করতে চান

আজুর স্ক্রিনশট এ প্রকাশ করুন


আমি পোস্ট করতে যাচ্ছিলাম ঠিক একই ছবি! আমি আশা করি আমি এই উত্তরটি স্ক্রোল করে ফেলেছি তবে উপরের উত্তরগুলি আমাকে এই ধারণার দিকে নিয়ে গেছে। +1
জেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.