নিশ্চিত করে নিন যে এইচটিটিপি কনফিগারেশন ns


142

আমি ভিজ্যুয়াল স্টুডিও 2013 ইনস্টল করেছি এবং আমি আমার অ্যাপ্লিকেশনটি চালানোর সময় আমি নীচে ত্রুটি পেয়েছি।

আমি এই অবজেক্টটি কোথায় চালু করব তা সম্পর্কে আমার কোনও ধারণা নেই।

কি করো?

    Server Error in '/' Application.

The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[InvalidOperationException: The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.]
   System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes() +101
   System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request) +63
   System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext) +107
   System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) +233
   System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) +60
   System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) +82
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408

এটি অ্যালামক্লাউডের জন্য

উত্তর:


141

এটি এখনই হ্যান্ডেল করার সঠিক উপায়ের জন্য নীচে @ জেনটিয়ানের উত্তর দেখুন

Application_Startপদ্ধতির শেষে Global.Asax.csএটিকে যুক্ত করে দেখুন: -

GlobalConfiguration.Configuration.EnsureInitialized(); 

3
আমি এই উত্তরটি পেয়েছিলাম তাই আমি আমার প্রকল্পটি ভিএস 2013 এর পূর্বরূপ সংস্করণ থেকে আপডেট 1 এর সাথে উত্পন্ন একটি সাথে তুলনা করেছিলাম এবং পার্থক্যটি হ'ল তারা ওয়েবএপিসিফিগ্রেজি.রেজিস্টার (...) কে গ্লোবাল কনফিগারেশন.কনফিগার () দিয়ে প্রতিস্থাপন করেছে। ..) জেনটিয়ান তাদের উত্তরে বর্ণনা করে। এটি সমস্যার সমাধান করে।
ব্রায়ান বেয়ার্ড

1
GlobalConfiguration.Configure(Action<HttpConfiguration> configurationCallback)কনফিগারেশনক্যালব্যাকের পরে ঠিক এটি কল করবে।
সেমিএক্সএল

4
GlobalConfigration.Configure (WebApiConfig.Register) এর আগে ডিআই কনফিগারেশন সম্পন্ন হওয়ার পরে ত্রুটিও দেখা দিতে পারে; কল
সিলভস

ধন্যবাদ. এটা আমার পাশের কাঁটা ছিল।
রবার্ট বোল্টন

241

আপনি যদি অ্যাপ্লিকেশন_স্টার্টের শেষে এটি করেন তবে এটি অনেক দেরিতে হবে, যেমন ওয়েবএপিপিফিগ.আরজিস্টারকে ডাকা হয়েছে।

এটি সমাধানের সর্বোত্তম উপায় হ'ল গ্লোবাল.এক্স্যাক্সে প্রতিস্থাপন করে নতুন আরম্ভকরণ পদ্ধতিটি ব্যবহার করা:

WebApiConfig.Register(GlobalConfiguration.Configuration);

দ্বারা

GlobalConfiguration.Configure(WebApiConfig.Register);

12
মাইক্রোসফ্ট ডকুমেন্টেশনের ভিত্তিতে এটি করার সঠিক উপায় হওয়া উচিত। asp.net/web-api/overview/web-api-routing-and-ferences/…
ডালোরজো

আমি একটি এমভিসি অ্যাপ্লিকেশন স্থানান্তরিত করে চলেছি, যখন এপিআই রুটগুলি কাজ করছিল না, এটি যুক্ত করে এবং ম্যাপএইচটিপিএট্রিবিউটরুটস এটি সমস্ত কিছুকে প্রাণবন্ত করে তুলেছিল।
ফিল কুপার

1
এই উত্তরটি আমার জন্য এটি স্থির করেছে।
গিডিআপহর্সি 12:54

তবে আপনার যদি ওয়েবএপিপিফনফিগ অ স্ট্যাটিক ক্লাস থাকে?
জর্জি গ্রিগরিয়েভ

@ জর্জিগ্রিগরিভ: আপনি এটিকে ঠিক তেমন ক্রিয়ায় ইনস্ট্যান্ট করতে পারেন:GlobalConfiguration.Configure(config => new WebApiConfig().Register(config));
সেমিএক্সএল

69

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

আমার ছিল

[রুট ( "webapi / siteTypes / {siteTypeId"]

পরিবর্তে

[রুট ( "webapi / siteTypes / {siteTypeId}"]

আমার রুটের জন্য এবং এই ত্রুটি পেয়েছে। আমি কেবল ক্লোজিং কোঁকড়ানো বন্ধনীটি মিস করেছি। আমি একবার এটিকে যুক্ত করে দিলে, এই ত্রুটিটি আর ঘটেনি।


23
আমারও এই সমস্যা ছিল যখন আমি [রুট ("এপিআই")] এর পরিবর্তে স্ল্যাশ [রুট ("/ এপিআই /"]) দিয়ে
রুটটির উপসর্গ করেছি

1
{আইডি: আইডি} আইডি: ইনট int এর পরিবর্তে
মারাত বাটালন্দবাদ

1
এই একজন আমাকে সর্বদা পেয়ে যায় তবে এটি একটি ভিন্ন ত্রুটি দিত। ভিজ্যুয়াল স্টুডিও 2015 এবং নেট 4.6 এ আপগ্রেড করার পরে আমি এই ত্রুটিটি পেয়েছি।
অগস্ট

7
আমার ত্রুটিটি ছিল [রুট ("এপিআই / {প্যারামিটার: স্ট্রিং}")] [রাউটের পরিবর্তে ("এপিআই / {প্যারামিটার}")]]। স্পষ্টতই বলা যায়: স্ট্রিং টাইপ হিসাবে ভুল হিসাবে এটি ডিফল্ট।
জ্যাম্বি

1
জ্যাম্বির অনুরূপ, আমার ত্রুটিটি আমার দরকার ছিল: [রুট ("এপিআই / অবজেক্টঅফআইনটারেস্ট / {প্রকার} / {নাম}"))] ... তবে: [রুট ("এপিআই / অবজেক্টঅফআইনটারেস্ট / {টাইপ: স্ট্রিং} / {নাম : স্ট্রিং} ")] // WRONG ... কাজ করছে না। আমি জানি এটি অদ্ভুত যে আমার 'টাইপ' নামের একটি প্যারামিটার দরকার যা স্ট্রিং (এবং একটি সিস্টেম.টাইপ নয়) ... তবে স্ট্রিংয়ের স্পেসিফিকেশন সরিয়ে ফেলেছে এবং এটি ঠিক কাজ করে।
আইডানপওয়ার্ড

31

এটি পুরানো তবে এই ত্রুটিটি অনুসন্ধান করার সময় গুগলে প্রথম ফলাফল is বেশ খানিকটা খোঁড়াখুঁড়ি করার পরে আমি বুঝতে পারছিলাম যে কি চলছে।

tldr:
সকল GlobalConfiguration.Configure করে ডাকা আপনার কর্ম এবং কল EnsureInitialized ()কনফিগার.ম্যাপএট্রিবিউটরুটস () অবশ্যই এনএসিউরআইনিটায়ালাইজড () এর আগে কল করা উচিত যেহেতু এনএসুরিআইনিটাইজাইজড কেবল একবার চালিত হয়।

অর্থ: আপনি যদি কোনও বিদ্যমান এমভিসি প্রকল্প থেকে আসেন তবে আপনাকে যা করতে হবে তা হ'ল:

  1. যোগ GlobalConfiguration.Configuration.EnsureInitialized (); আপনার অ্যাপ্লিকেশন_স্টার্ট পদ্ধতির নীচে ।

অথবা

  1. আপনার সম্পূর্ণ কনফিগারেশনটি একক কলে গ্লোবাল কনফিগারেশন এ সরান on কনফিগার :
GlobalConfiguration.Configure(config => 
{
    WebApiConfig.Register(config);
    config.MapAttributeRoutes();
    ...
});

গভীরে খনন

এইচটিটিপি কনফিগারেশন. কনফিগারেশনের একটি "ইনিশিয়ালাইজার" বৈশিষ্ট্যটি এর মতো সংজ্ঞায়িত করা হয়েছে:

public Action<HttpConfiguration> Initializer;

HttpConfigration.EnsureInitialized () এই ক্রিয়াটি চালায় এবং _initialized সেট করে সত্য

public void EnsureInitialized()
{ 
    if (_initialized)
    {
        return;
    }
    _initialized = true;
    Initializer(this);            
}

HttpConfiguration.MapAttributeRoutes অভ্যন্তরীণ পদ্ধতি আহ্বান AttributeRoutingMapper.MapAttributeRoutes যা সেট করে HttpConfiguration.Initializer

public static void MapAttributeRoutes(...)
{
    RouteCollectionRoute aggregateRoute = new RouteCollectionRoute();
    configuration.Routes.Add(AttributeRouteName, aggregateRoute);

    ...

    Action<HttpConfiguration> previousInitializer = configuration.Initializer;
    configuration.Initializer = config =>
    {
        previousInitializer(config);
        ...
    };
}

GlobalConfiguration.Configure রান EnsureInitialized আপনার কর্ম invoking পরে অবিলম্বে:

public static void Configure(Action<HttpConfiguration> configurationCallback)
{
    if (configurationCallback == null)
    {
        throw new ArgumentNullException("configurationCallback");
    }

    configurationCallback.Invoke(Configuration);
    Configuration.EnsureInitialized();
}

ভুলে যাবেন না, যদি আপনি কোনও প্রাচীরের দিকে চলে যান তবে এসপিএনটির উত্সটি http://aspnetwebstack.codeplex.com/SourceControl/latest এ উপলব্ধ


GlobalConfigration.Configure- এ একক কল সহ সমাধানটি আমার জীবন বাঁচিয়েছে। কনফিগারেশনগুলি কল করার সঠিক ক্রমের সাথে সাথে আমার অ্যাট্রিবিউট ভিত্তিক রাউটিং এবং ডিআই কনফিগারেশন নিয়ে সমস্যা ছিল। আমি এমএস অ্যাপিভিওরিওনিংও ব্যবহার করি, যেখানে প্রথম রুটের সংস্করণ বৈশিষ্ট্যগুলি হিট করার আগে আমার ডিআই ইঞ্জেকশনগুলির প্রয়োজন হয়েছিল। অনেক অনেক ধন্যবাদ
সিলভস

12

আমি একটি সম্পর্কিত সমস্যা ছিল। কখনও কখনও GlobalConfiguration.Configureএকাধিকবার কল করা এই ত্রুটিটিকে ট্রিগার করে। কার্যকারণ হিসাবে, আমি সমস্ত কনফিগারেশন সূচনা যুক্তি এক জায়গায় রেখেছি।


হ্যাঁ, এটি অবশ্যই আমার ক্ষেত্রে সমস্যা ছিল
ওবি

ধন্যবাদ! এটা ঠিক আমার সমস্যা ছিল।
সেরেন বোইসেন

একই সমস্যা এখানে! কয়েক ঘন্টা ধরে সমস্যাটি সমাধান করার চেষ্টা করা হয়েছে, সুতরাং মন্তব্যের জন্য এক্স।
Sc0tTy

7

আমার জন্য সমস্যাটি ছিল যে আমি আমার রুটে ক্যোয়ারিং স্ট্রিংয়ের ক্ষেত্রগুলির জন্য নামযুক্ত পরামিতিগুলি ব্যবহার করার চেষ্টা করছিলাম:

[Route("my-route?field={field}")]
public void MyRoute([FromUri] string field)
{
}

ক্যোরি স্ট্রিং ফিল্ডগুলি স্বয়ংক্রিয়ভাবে প্যারামিটারগুলিতে ম্যাপ করা হয় এবং প্রকৃতপক্ষে রুট সংজ্ঞাটির অংশ হয় না। এইটা কাজ করে:

[Route("my-route")]
public void MyRoute([FromUri] string field)
{
}

7

যদিও উপরের উত্তরটি যদি সেট না করা হয় তবে তা কাজ করে, আমার ক্ষেত্রে এই জিনিসটি ইতিমধ্যে সেট করা ছিল। অন্যটি যা ছিল তা হল, আমি যে API গুলি লিখেছিলাম তার একটিতে আমি একটি / দিয়ে রুটটিকে উপসর্গযুক্ত করেছিলাম। উদাহরণ

[Route("/api/abc/{client}")] 

.এটাতে পরিবর্তন

[Route("api/abc/{client}")]

এটা আমার জন্য স্থির কর


পছন্দ করুন একটি বোকা জিনিস মত দেখে মনে হচ্ছে, কিন্তু বেশ কয়েকটি ক্ষেত্রে ইস্যুটি thats বলে মনে হয়। : পি
0bserver

@ থ0bserver এটি আমার পক্ষেও কাজ করেছিল। কারণ আমার নিয়ামক বর্গ উপরের আমি একজন ছিল এটা নির্ণয় করতে কঠিন ছিল HttpPrefixপ্রসাধক এবং তারপর আমার পৃথক শেষবিন্দু আমি প্রসাধক ছিল: [Route("/")]। রুটে কেবল একটি খালি স্ট্রিং দিয়ে সমস্যাটি স্থির করে।
ডেভিড

1
এটা খুশী হয়েছে। :)
0bserver

7

যদি এই ত্রুটিটি "এখনই বাইরে আসে" , যেমন আপনার অ্যাপ্লিকেশনটি কিছুক্ষণের জন্য পুরোপুরি ঠিকঠাক কাজ করছিল, নিজেকে জিজ্ঞাসা করুন: আমি এই ত্রুটিটি দেখার আগে কোনও নিয়ামকের সাথে কোনও পদক্ষেপ যুক্ত করেছি বা কোনও রুট পরিবর্তন করেছি?

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


আমার সাথে ঠিক এটাই হয়েছিল। আমি একটি রুট পরিবর্তন করেছি তবে শেষের দিকে একটি ভ্রান্ত কোঁকড়ানো বন্ধনী রেখেছি: [রুট ("গেটস্টফ}")]
স্টু দাম

2

কল

GlobalConfiguration.Configuration.MapHttpAttributeRoutes();

আগে

GlobalConfiguration.Configure(c => ...);

এটি কার্যকর করে


2

আমি এই ত্রুটিটি পেয়েছি যখন সহায়ক প্রধান প্রকল্পের তুলনায় নিউটনসফট.জসনের সংস্করণটি আমার মূল প্রকল্পে আলাদা ছিল


দ্রুত সংযোজন: রেফারেন্স ইস্যুটি ঠিক করার পরে আপনার সমাধানটি পরিষ্কার করার বিষয়টি নিশ্চিত করুন এবং চূড়ান্ত মোতায়েন করা ডিএলএলটি সঠিক সংস্করণ কিনা ডাবল পরীক্ষা করুন :)
মার্সেল

1

"অ্যাট্রিবিউট রাউটিং" এ রুটের টেম্পলেটগুলি যথাযথ না হলে সাধারণত এই ব্যতিক্রম ঘটে gets

উদাহরণস্বরূপ, যখন আমি নিম্নলিখিত কোডটি লিখেছিলাম তখন এটি পেয়েছিলাম:

[Route("{dirName:string}/contents")] //incorrect
public HttpResponseMessage GetDirContents(string dirName) { ... }

রুট সীমাবদ্ধতায় সিনট্যাক্স {পরামিতি: সীমাবদ্ধতা}, ডিফল্টরূপে বাধা টাইপ স্ট্রিংয়ের । এটি সুস্পষ্টভাবে উল্লেখ করার দরকার নেই।

[Route("{dirName}/contents")] //correct
public HttpResponseMessage GetDirContents(string dirName) { ... }

0

আমি এই ত্রুটিটি একদিন পেতে শুরু করেছি। আমি কল করতে আমাদের অ্যাপ্লিকেশন পরিবর্তন করার পরে আমি EnsureInitialized()মূল কারণটি দেখতে সক্ষম হয়েছি।

আমার একটি ক্রিয়াকলাপে একটি কাস্টম বৈশিষ্ট্য, একটি ফিল্টার ছিল। সেই অ্যাট্রিবিউট শ্রেণীর নুগেট প্যাকেজটিতে এটি বসবাস করে তাতে একটি ব্রেকিং পরিবর্তন হয়েছিল।

যদিও আমি কোডটি আপডেট করেছিলাম এবং এটি সমস্ত সংকলন করেছি, স্থানীয় আইআইএস কর্মী একটি পুরানো ডিএলএল লোড করছিলেন এবং প্রাথমিককরণের সময় কোনও শ্রেণীর সদস্য খুঁজে পাচ্ছিলেন না, ক্রিয়ায় বৈশিষ্ট্যগুলি পড়ছিলেন ইত্যাদি was

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

একটি কার্যকর স্ক্রিপ্টের মাধ্যমে একটি যথাযথ binএবং objপরিষ্কার সম্পাদন করা এর সমাধান করেছে।


0

আমার ক্ষেত্রে আমি প্রকল্প এ-তে ওয়েব সার্ভিস তৈরি করেছি এবং এটি প্রকল্প বি থেকে শুরু করেছি এবং আমি ঠিক এই ত্রুটি পেয়েছি। সমস্যাটি হ'ল বি। এর বিল্ড-আউটপুট-ফোল্ডারে অনুপস্থিত থাকা কিছু ডি। ডিএল-ফাইলের প্রয়োজনীয়তা নিশ্চিত করুন যে এই .dll-ফাইলগুলি উপলব্ধ রয়েছে তা এটি ঠিক করে দিয়েছে।


0

আমার ক্ষেত্রে, আমি কোনও অ্যাক্টিটি আমার ক্রিয়াকলাপের পরামিতি হিসাবে ব্যবহার করেছি যা এর 'স্কিমা' অনুপস্থিত।

ভুল বৈশিষ্ট্য:

[Table("Table name", Schema = "")]

সঠিক:

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