আমার প্রকল্পে একই নামের একাধিক নিয়ন্ত্রণকারীদের সাথে সমস্যা রয়েছে


97

আমি আমার এএসপি.নেট এমভিসি 3 প্রকল্পের সাথে নিম্নলিখিত ত্রুটিটি নিয়ে চলেছি:

একাধিক ধরণের সন্ধান পাওয়া গেছে যা 'হোম' নামের কন্ট্রোলারের সাথে মেলে। এই অনুরোধটি ('হোম / {ক্রিয়াকলাপ} / {id services') যে রুটটি পরিষেবাটি অনুরোধের সাথে মেলে এমন কোনও নিয়ামকের সন্ধানের জন্য নামের ক্ষেত্রগুলি নির্দিষ্ট না করে তবে এটি ঘটতে পারে। যদি এটি হয় তবে 'নেপস্পেস' প্যারামিটার গ্রহণকারী 'মানচিত্র' পদ্ধতির একটি ওভারলোডকে কল করে এই রুটটি নিবন্ধ করুন।

'হোম' এর জন্য অনুরোধটি নিম্নলিখিত মেলানো নিয়ামকগুলি খুঁজে পেয়েছে: মাইকম্পানি.মাইপ্রজেক্ট. ওয়েবেএমভিসি.কন্ট্রোলারস।হমকন্ট্রোলার মাইকম্পানি.মাইপ্রজেক্ট.ওয়েবএমভিসি.আরিয়াস।কম্প্যানি.কন্ট্রোলার্স হোমকন্ট্রোলার

আমার ডিফল্ট কন্ট্রোলার ফোল্ডারে আমার একটি হোম কন্ট্রোলার রয়েছে, মাইকম্পানি.মাইপ্রজেক্ট.ওয়েবএমভিসি.কন্ট্রোলার্স ome হোমকন্ট্রোলারের একটি শ্রেণীর নাম রয়েছে।

আমার রেজিস্টারআউটস পদ্ধতিটি আমার গ্লোবাল.অ্যাক্স-এ, দেখে মনে হচ্ছে:

    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 } // Parameter defaults
        );
    }

আমার তখন কোম্পানির নামে একটি অঞ্চল আছে, মাইকম্পানি.মাইপ্রজেক্ট.ওয়েবএমভিসি.আরিয়াস.কম্প্যানি.কন্ট্রোলার্স.হমকন্ট্রোলারের একটি শ্রেণীর নাম সহ এই অঞ্চলের ডিফল্ট কন্ট্রোলার ফোল্ডারে একটি হোম কন্ট্রোলার রয়েছে।

কোম্পানীআরাইজিস্ট্রেশন ফাইলটিতে রেজিস্ট্রারআরিয়া পদ্ধতিটি দেখে মনে হচ্ছে:

   public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Company_default",
            "Company/{controller}/{action}/{id}",
            new { area = "Company", action = "Index", id = UrlParameter.Optional }
        );
    }

এটি এই পোস্টের শুরুতে আমি যে ত্রুটিটি হাইলাইট করেছে তার নেতৃত্ব দিচ্ছে। আমি নন লুচকে নিয়ে অন্যান্য বিভিন্ন পোস্ট থেকে সমাধানের চেষ্টা করার চেষ্টা করছি ।

ডিফল্ট নিয়ন্ত্রণকারী ফোল্ডারে এবং তারপরে প্রতিটি অঞ্চলে একটি হোম কন্ট্রোলার পাওয়া সম্ভব? যদি তা হয় তবে এই কাজটি করার জন্য আমার কি আমার কনফিগারেশন ফাইলটিতে পরিবর্তন (আমি ধরে নিচ্ছি) পরিবর্তন করা দরকার?

কোন সাহায্যের অনেক প্রশংসা হবে!



আমি যখন প্রকল্প / সমাবেশটির নামকরণ করেছি তখন আমার ক্ষেত্রে এটি ঘটেছিল, আমি কেবল বিন ফোল্ডারটি মুছে ফেলেছিলাম এবং প্রকল্পটি পুনরায় কম্পাইল করেছিলাম এবং এটি দুর্দান্ত কাজ করে।
কোর

উত্তর:


169

ত্রুটি বার্তায় প্রস্তাবিত সমাধান রয়েছে: "যদি এটি হয় তবে 'নেপস্পেস' প্যারামিটার গ্রহণকারী 'মানচিত্র' পদ্ধতির একটি ওভারলোডকে কল করে এই রুটটি নিবন্ধ করুন" "

routes.MapRoute(
     "Default", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
     new string[] { "MyCompany.MyProject.WebMvc.Controllers"}
);

এটি http: // সার্ভার তৈরি করবে / আপনার হোম কন্ট্রোলারের সূচক ক্রিয়ায় যাবে যা আমি মনে করি আপনি কী চান। HTTP: // সার্ভার / সংস্থা / বাড়ি অঞ্চল নিবন্ধের সংজ্ঞায়িত হিসাবে কোম্পানির হোম কন্ট্রোলার সূচক ক্রিয়ায় যাবে।


4
আমি এটি পরীক্ষা করে দেখিনি, তবে namespacesপ্যারামিটারটি একটি স্ট্রিং অ্যারে, সুতরাং অ্যারে যুক্ত করে আপনার কোনও সংখ্যা পাস করতে সক্ষম হওয়া উচিত:new string[] { "MyCompany.MyProject.WebMvc.Controllers", "My.Second.Namespace", "My.Third.Namespace", "Namespaces.Etc" }
ডেভিড রত্তকা

4
এই নেমস্পেস প্যাটার্নটি আমার পক্ষে কার্যকর হয়নি। MyProject.Controllersযাইহোক।
মাফিন ম্যান

আমি এই চেষ্টা করেছিলাম। তবে এই MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeControllerশ্রেণীর সূচকটি কার্যকর করছে। তবে ভিউটি দেখা যাচ্ছে পুরানো old
kbvishnu

টাইপ ইনফারেন্স এবং ভেরিয়েবল অর্থের কারণেই এখানে 4 র্থ প্যারামিটারটি কিছুটা বিভ্রান্তিকর হতে পারে। ৪ র্থ প্যারামিটারটি নেমস্পেস দ্বারা সীমাবদ্ধ করার জন্য স্ট্রিং অ্যারে হতে পারে, আইআরউটকন্ট্রেন্টস বা স্ট্রিংগুলিকে সংযোজন হিসাবে ব্যাখ্যা করা যায়, বা আপনার কাছে 5 টি প্যারামিটার থাকতে পারে এবং উভয়ই অন্তর্ভুক্ত থাকতে পারে। aspnetwebstack.codeplex.com/SourceControl/changeset/view/…
ক্রিস মোসচিনি

এছাড়াও একটি পাথ লক্ষণীয় মূল্য অন্য ডিফল্টরূপে তার নাম সন্ধান করতে পারে - আপনি যদি কোনও নেমস্পেসে বা নেমস্পেসের সেটকে কোনও লক করতে চান তবে আপনাকে এই ফলব্যাকটি নিষ্ক্রিয় করতে হবে: বুবলিগিং.ওয়ার্ডপ্রেস.কম / 2012/06/06 / এমভিসি- রাউটিং-নেমস্পেসস (পৃষ্ঠার নীচে)
ক্রিস মোসচিনি

30

এটি হ'ল আস্প নেট এমভিসি 4 পদ্ধতি:

 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "RegisterNow", id = UrlParameter.Optional },
            namespaces: new[] { "YourCompany.Controllers" }
        );

4
ধন্যবাদ, এটি আমার জন্য এটি সমাধান করেছে, যদিও আমার অ্যাপ্লিকেশনটি কেন প্রথম স্থানে দু'জন হোম কন্ট্রোলার রয়েছে বলে আমার জীবনের জন্য তা নির্ধারণ করতে পারি না। আমি নেমস্পেসের অনুসন্ধান ও প্রতিস্থাপন করেছি, যা সমস্যাটি দেখা দিয়েছে বলে মনে হয়, তবে পুরো সমাধানটির অনুসন্ধানে দুর্বৃত্ত নেমস্পেসের কোনও দৃষ্টান্ত দেখা যায় না।
ইয়ান ডুরান

12
ঠিক আছে, আমি আমার সমস্যার কারণ খুঁজে পেয়েছি। আশা করি এটি আজকে যেমন ছিল তেমনি অন্য কাউকে মরিয়া অনুসন্ধানে সহায়তা করতে পারে। যেহেতু আমি অ্যাপ্লিকেশনটির নাম পরিবর্তন করেছি (পাশাপাশি নেমস্পেস), এখনও বাক্স ফোল্ডারে একটি ডিএলএল বাকি ছিল যা কোনও ক্লিন দ্বারা মুছে ফেলা হয়নি। কভারগুলির নিচে অবশ্যই কিছু এমইএফ জাদু চলছে। পুরানো ডিএলএল আবিষ্কার ও মোছার সাথে সাথেই সমস্যাটি চলে গেল। কোনও পাঠ্যের সন্ধান এটির সন্ধান পায় নি!
ইয়ান ডুরান

@ ইয়ানডুরান, একই ধরণের সমস্যায় পড়েছে এবং আপনার স্থির সাহায্য করেছে। ধন্যবাদ
ক্লাউস এনজি

12

আমি নামব্যবধান নতুন নামকরণ করেছিলেন, তাই হয়, আমি শুধু মুছে ফেলতে ডি ফোল্ডার বিন এবং obj এবং পুনর্নির্মাণের আবার, হবে।



2

এটা ব্যবহার কর

routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new[] { "ProjectName.Controllers" }
        );

2

আপনি যদি রেজারজেনেটর ব্যবহার করে থাকেন তবে namespacesপরামিতিটি অবহিত করা যথেষ্ট নয় not

নীচে চিহ্নিত বিবৃতিটি এখানে যুক্ত করার সমাধান করেছি Global.asax.cs:

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        ControllerBuilder.Current.DefaultNamespaces.Add("MyProject.Controllers"); // This one
    }

1

প্রকল্পের নামটি ব্যবহার করুন:

Public Class RouteConfig
    Public Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
        routes.MapRoute( _
            name:="Default", _
            url:="{controller}/{action}/{id}", _
            defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
           , namespaces:={"MvcAreas"})  
    End Sub

0

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

routes.MapRoute(
     "Default", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
     new string[] { "MyCompany.MyProject.WebMvc.Controllers"}
);

ডিফল্ট রুট হ্যান্ডলারটিকে ওভাররাইড করা এবং এই লাইনটি যুক্ত করা "সেরা":

RequestContext.RouteData.DataTokens["UseNamespaceFallback"] = false;

0

আমি একই প্রকল্পে অন্য প্রকল্পে একটি রেফারেন্স যুক্ত করার পরে আমার এই সমস্যাটি ছিল এবং আমি রেফারেন্সটি সরিয়ে দেওয়ার পরেও সমস্যাটি অব্যাহত ছিল।

বিন ফোল্ডার থেকে যুক্ত হওয়া রেফারেন্সের .dll ফাইলটি মুছে ফেলা এবং পুনর্নির্মাণের মাধ্যমে সমাধান করা।


0

অন্য অনেকের মতো, ভিএস2017 মেনু থেকে একটি নতুন এমভিসি টেম্পলেট প্রকল্প তৈরি করার পরে আমার এই সমস্যাটি হয়েছিল, প্রকল্পটি নির্মাণের সময় আমি অপটির ত্রুটি বার্তাটি পাই। আমি তখন এই এমভিসি 4 প্রকল্পগুলির জন্য কুলओ ভারাইড দ্বারা এই থ্রেডে পোস্ট করা https://stackoverflow.com/a/15651619/2417292 উত্তরটি ব্যবহার করেছি। এটি এখনও আমার সমস্যার সমাধান করে নি তাই আমি আমার হোম ভিউ ফোল্ডার এবং হোমকন্ট্রোলার ফাইলটির নাম পরিবর্তন করে ফোল্ডার সংস্থা / এবং নিয়ন্ত্রক ফাইল সংস্থা কনট্রোলার হিসাবে রাখলাম। এটি তখন আমার পক্ষে কাজ করেছিল, প্রতি কথার স্থিরতা নয় বরং কাজের সমাধান যদি আপনার রুট হোম / ইনডেক্সে আটকে না থাকে তবে আমার অন্য সমস্যাটি আমি ত্রুটির কারণ হিসাবে উল্লেখ করতে পারি না এবং আমার ডেভ প্ল্যাটফর্মের কারণে অ্যাজুরে ওয়েব অ্যাপ্লিকেশন বনাম একটি ছিল একটি সম্পূর্ণ ফাইল সিস্টেমের সাথে পূর্ণ ভিএম এবং আইআইএস সেটিংসের সাথে ঝামেলা করতে হবে।


0

আমার একই সমস্যা ছিল এবং এটি দেখতে পেয়েছি যে পুরানো সংস্করণ "বিন" ফোল্ডারে সংকলিত ফাইল তৈরি করেছে।

আমি একবার মুছে ফেললে এই ত্রুটিটি অদৃশ্য হয়ে যায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.