আইআইএস 7-তে আইআইএস এক্সপ্রেসে নয়, ওয়েবএপির {"বার্তা": "ত্রুটি ঘটেছে"


171

আমি এএসপি.নেট এমভিসি 4 ওয়েবএপির সাথে কাজ করছি এবং এটি আইআইএস এক্সপ্রেসে আমার স্থানীয় কম্পিউটারে এটি চালিয়ে নিয়ে অনেক মজা পাচ্ছি। আমি দূরবর্তী মেশিনগুলিকেও পরিবেশন করতে আইআইএস এক্সপ্রেসটি কনফিগার করেছি এবং তাই আমার সংস্থার অন্যরাও আমার কম্পিউটারকে আমাদের ওয়েবসারভার হিসাবে ব্যবহার করছে।

এটি একটি সর্বোত্তম-সর্বোত্তম সমাধান হিসাবে সিদ্ধান্ত নেওয়ার পরে, আমরা .NET 4.5 ইনস্টল করার পরে WebApi একটি রিমোট সার্ভারে রাখার সিদ্ধান্ত নিয়েছি। আমি যখন ফিজার ব্যবহার করি এবং আমার লোকাল মেশিনের একটি নিয়ামককে একটি পোষ্ট পাঠিয়ে থাকি তখন এটি সঠিক প্রতিক্রিয়া দেয়, তবুও আমি যখন আইআইএস 7 চলমান ওয়েবসভারটিতে ডোমেনটি পরিবর্তন করি তখন একই পোস্টটি একটি গুপ্তচর দেয়

message "বার্তা": "একটি ত্রুটি ঘটেছে"}

বার্তা। কারও কি ধারণা আছে কি হতে পারে?


2
ত্রুটির প্রতিক্রিয়াতে HTTP স্থিতি কোড কী? যদি এটি 500 হয় তবে এটি সম্ভবত আইআইএস 7 এর সাথে রিমোট মেশিনের জন্য ওয়েব সাইট / অ্যাপ্লিকেশন কনফিগারেশনটি অবৈধ the এটি সফল কিনা তা দেখতে আপনার মেশিন থেকে এটি টিপুন।
সিক্সটো সায়েজ

এটি 500-ত্রুটি। পরামর্শের জন্য ধন্যবাদ, তবে ওয়েবএপিআই সরবরাহ করে যে ডিফল্ট সূচক html পৃষ্ঠা। এছাড়াও যুক্ত করা উচিত যে কয়েকটি এপিআই ওয়েবসার্ভিসেস কাজ করে এবং অন্যরা কাজ করে না, যেখানে তাদের সমস্তই আমার স্থানীয় মেশিনে কাজ করে।
এনএসজি

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

1
আপনি নিজের সার্ভার মেশিনে একটি ব্রাউজারের অনুরোধ শুরু করে (যেমন একটি রিমোট ডেস্কটপ সেশন ব্যবহার করে) এর প্রতিক্রিয়ায় আপনাকে আরও ভার্বোজ ত্রুটির তথ্য দিতে সার্ভারটি পেতে সক্ষম হতে পারেন।
জন স্নাইডার

উত্তর:


268

সমস্যাটি ছিল একটি অনুপস্থিত নির্ভরতা যা সার্ভারে ছিল না তবে এটি আমার স্থানীয় মেশিনে ছিল। আমাদের ক্ষেত্রে এটি একটি ডিভার্ট ছিল।

এই উত্তরটি পেতে, আমি 500 ত্রুটির জন্য আইআইএস ট্রেসিং চালু করেছি। এটি কিছুটা তথ্য দিয়েছে, তবে সত্যিকারের সহায়ক জিনিসটি ছিল ওয়েলকনফিগের সেটিংসটিতে এটি <system.web><customErrors mode="Off"/></system.web>একটি গতিশীল-লোডযুক্ত নির্ভরতা অনুপস্থিত to এই নির্ভরতা যুক্ত করার পরে এবং এটি স্থানীয়ভাবে অনুলিপি করার কথা বলার পরে, সার্ভারটি কাজ শুরু করে।


33
দেখে মনে হচ্ছে যে ওয়েবএপিআই HT "বার্তা" কে প্রতিস্থাপন করবে: যখনই এইচটিটিপি রেসপন্স কোড 500 হয় এবং কাস্টম ত্রুটিগুলি চালু থাকে তখন আসল প্রতিক্রিয়ার জন্য "একটি ত্রুটি ঘটেছে"। পয়েন্টারের জন্য ধন্যবাদ।
পল সুয়ার্ট

4
কাস্টমআরিয়ার্স মোড সেট করার বিষয়ে দুর্দান্ত পরামর্শ। আমি আশ্চর্য হয়েছি যে এই ধরণের ত্রুটিগুলির ফলাফলের উপর প্রভাব ফেলেছিল।
দেবী রিস

1
আপনি এটিতে সেট করতে পারেন mode="RemoteOnly"এবং আপনি যদি সার্ভারে ওয়েব ব্রাউজারে পৃষ্ঠাটি চালান তবে আপনি যদি বাকী সাইটটি বাহ্যিকভাবে অ্যাক্সেসযোগ্য হয় তবে সুরক্ষা নিয়ে আপস না করে ত্রুটিগুলিও দেখতে পাবেন
সাইমন_উইভার

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

এটি সর্বোত্তম পন্থা, এ জাতীয় জেনেরিক পদ্ধতিতে পর্যাপ্ত তথ্য দেয়।
ড্যানিয়েলভি

97

মূলত:

এটির সমাধান না IncludeErrorDetailPolicyহলে পরিবর্তে ব্যবহার করুন CustomErrors(যেমন আপনি যদি এএসপি হন N নেট স্ট্যাকটি> 2012):

GlobalConfiguration.Configuration.IncludeErrorDetailPolicy 
= IncludeErrorDetailPolicy.Always;

দ্রষ্টব্য: বিশদ ত্রুটি সম্পর্কিত তথ্য ফিরে আসার বিষয়ে সতর্কতা অবলম্বন করা 'হ্যাকার'দের কাছে সংবেদনশীল তথ্য প্রকাশ করতে পারে। নীচে এই উত্তর সম্পর্কে সাইমন এর মন্তব্য দেখুন।

টিএল; ডিআর সংস্করণ

আমার জন্য CustomErrorsসত্যিই সাহায্য করেনি। এটি ইতিমধ্যে সেট করা ছিল Off, তবে আমি এখনও কেবল একটি ক্ষুদ্র an error has occurredবার্তা পেয়েছি । আমি অনুমান করেছি যে গৃহীত উত্তরটি 3 বছর আগে থেকে যা আজকাল ওয়েব ওয়ার্ডে দীর্ঘ সময় ধরে। আমি ওয়েব এপিআই 2 এবং এএসপি.নেট 5 (এমভিসি 5) ব্যবহার করছি এবং মাইক্রোসফ্ট কেবল আইআইএস-কেবল কৌশল থেকে সরে গেছে, যখনCustomErrors পুরানো স্কুল আইআইএস;)।

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

তারপরেই আমি জিমি বোগার্ডের এই নিবন্ধটি পেয়েছি (দ্রষ্টব্য: জিমি মিঃ মি। অটোম্যাপার! )। মজার বিষয় হ'ল তাঁর নিবন্ধটিও ২০১২ সালের, তবে এর মধ্যে তিনি ইতিমধ্যে ব্যাখ্যা করেছেন যে CustomErrorsএটির জন্য আর কোনও লাভ হয় না, তবে আপনি IncludeErrorDetailPolicyবৈশ্বিক ওয়েবএপি কনফিগারেশনে (যেমন WebApiConfig.cs) আলাদা করে 'ত্রুটি বিশদ' পরিবর্তন করতে পারেন :

GlobalConfiguration.Configuration.IncludeErrorDetailPolicy 
= IncludeErrorDetailPolicy.Always;

ভাগ্যক্রমে তিনি কীভাবে সেট আপ করবেন তাও ব্যাখ্যা করে যে ওয়েবপি (২) আপনার কথা শুনে CustomErrors সেটিংস । এটি একটি দুর্দান্ত বোধগম্য উপায় এবং এটি আপনাকে 2012 এ ফিরে যেতে দেয়: পি।

দ্রষ্টব্য: ডিফল্ট মান হ'ল 'লোকাল-ওয়ানলি', যা ব্যাখ্যা করে যে এই পোস্টটি সন্ধানের আগে আমি যেভাবে বর্ণনা করেছি সেইভাবেই সমস্যাটি সমাধান করতে সক্ষম হয়েছি। তবে আমি বুঝতে পারি যে প্রত্যেকে ব্রাউজার উত্পাদন এবং প্রারম্ভের জন্য কেবল দূরবর্তী হতে পারে না (আমি জানি আমি বেশিরভাগই ফ্রিল্যান্স এবং ডিভোপসে যাওয়ার সিদ্ধান্ত নেওয়ার আগে পর্যন্ত আমি পারিনি)।


2
এখন, এটি কাজ করে। ধন্যবাদ! আমার কিছু ইন-মেমরি-ইন্টিগ্রেশন-আউইন-জাতীয় পরীক্ষা রয়েছে যা বিল্ড সার্ভারে ব্যর্থ হয়, তবে স্থানীয়ভাবে নয়। আমার স্টার্টআপ-ক্লাসে এই সেটিংয়ের সাথে আমার কারণটি খুঁজে বের করার একটা সুযোগ থাকতে পারে।
থমাস আইদে

দেখা যাচ্ছে যে মাইক্রোসফ্টের মাধ্যমে আইআইএস-এ হোস্ট করা থাকলে কাস্টমআরার সেটিংস WebApi 2 এর সাথে কাজ করে sp প্যাকেজ, সংস্করণ 5.2.3 তাই অতীত 2012 ASP.NET স্ট্যাক পথ বন্ধ করার জন্য এটি হিসাবে সেট করলে, ওয়েব এপিআই, আরো বিস্তারিত করার জেনেরিক ত্রুটি থেকে পরিবর্তন কল স্ট্যাক ধারণকারী, ইত্যাদি ...
টম

4
এটি সেট করার বিষয়ে সতর্কতা অবলম্বন করুন কারণ এটি 'হ্যাকার'দের কাছে সংবেদনশীল তথ্য প্রকাশ করতে পারে। আমি প্রায়শই if (DateTime.Now < new DateTime(2017, 6, 22)) { .... }এই জাতীয় একটি বিকল্প সেট করতে একটি দ্রুত হ্যাক করব । তারপরে আমি এটিকে উত্পাদনে পরীক্ষা করতে পারি এবং কাল যদি আমি এটি অক্ষম করতে ভুলে যাই তবে এটি যাদুতে স্বাভাবিকভাবে ফিরে আসবে।
সাইমন_উইভার

36

অন্য কোনও উত্তর আমার পক্ষে কাজ করেনি।

এটি করেছে: (স্টার্টআপ.স এ)

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var config = new HttpConfiguration();

        WebApiConfig.Register(config);

        // Here: 
        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
    }
}

(বা আপনি এটি ওয়েবএপিপিফিন.সি.এস এ রাখতে পারেন):

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        // Here: 
        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
    }
}

হ্যাঁ! মনো / লিনাক্সে আমার জন্য এটিই একমাত্র কার্যকরী সমাধান ছিল।
রবার্ট দ্বিতীয়

এটি আইআইএস এবং উইন্ডোজ সার্ভারে অভ্যন্তরীণভাবে পরিবেশন করা অ্যাপ্লিকেশনটির জন্য আমার পক্ষে কাজ করেছিল।
পল কার্লটন

config.Inc شمولErrorDetailPolicy = IncludErrorDetailPolicy.Always; আমাকে জানতে সাহায্য করলাম যে আমি এমন একটি সত্তার উদাহরণ ফিরিয়ে দিয়েছি যা পার্স করা যায়নি কারণ প্রসঙ্গটি নিষ্পত্তি হয়েছে আপনাকে ধন্যবাদ
জুড জিন্দি

12

আমি যখন পরীক্ষার পরিবেশে কোনও ত্রুটি মারি তখন আমি সর্বদা এই প্রশ্নে আসি এবং মনে রাখি, "আমি এটি আগেও করেছি, তবে কোডটি সংশোধন না করে এবং পরীক্ষার পরিবেশে পুনরায় মোতায়েন না করেই সরাসরি ওয়েবকনফিগে এটি করতে পারি , তবে এটি 2 টি পরিবর্তন করে ... আবার কী ছিল? "

ভবিষ্যতের রেফারেন্সের জন্য

<system.web>
   <customErrors mode="Off"></customErrors>
</system.web>

এবং

<system.webServer>
  <httpErrors errorMode="Detailed" existingResponse="PassThrough"></httpErrors>
</system.webServer>

11

ওয়েবএপিআইয়ের শেষ পয়েন্টে পোস্ট করার সময় আমারও একই সমস্যা ছিল। কাস্টমআরিয়ারস = অফ করে, আমি আসল ত্রুটিটি দেখতে পেয়েছি যা একটি ঘরের মধ্যে অনুপস্থিত ছিল।


10

যদি এটি কাউকে সহায়তা করে:

আমার অনুরূপ সমস্যা ছিল এবং নীটদের নির্দেশাবলী অনুসরণ করে আমি যুক্ত করেছি:

<system.web>
     <customErrors mode="Off"/>
 </system.web>

এটি আমাকে ত্রুটি সম্পর্কে আরও তথ্য দেখিয়েছে:

"এক্সেপশনমেসেজ": "উল্লিখিত মেটাডাটা রিসোর্স লোড করতে অক্ষম" "," এক্সপশনটাইপ ":" সিস্টেম.ডাটা.এন্টি.কোর.মেটাডেটা এক্সেপশন "," স্ট্যাকট্রেস ":" সিস্টেম.ডাটা.এন্টিটি.কোর.মেটাটাটা.এডএম.মেটাডাটা আর্টিক্যাক্টলোটারসম্পোর্সকোম্পোজ .LoadResources (...

এটি যখন আমি মনে করি আমি এডএমএক্স ফাইলটি অন্য কোনও জায়গায় নিয়ে গিয়েছিলাম এবং কনফিগারেশনে সংযোগের নোডগুলি পরিবর্তন করতে ভুলে গিয়েছি ("কনফিগারসোর্সিং নোডটি" কনফিগারসোর্স "ব্যবহার করে একটি পৃথক ফাইলে রাখা হয়েছিল, তবে এটি অন্য গল্প)।


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

0

আমার সোয়াগার এক্সএমএল ফাইলটি \ বিনে স্থাপন করা হয়নি:

GlobalConfiguration.Configuration
  .EnableSwagger(c =>
  {
    c.SingleApiVersion("v1", "SwaggerDemoApi");
    c.IncludeXmlComments(string.Format(@"{0}\bin\SwaggerDemoApi.XML", 
                         System.AppDomain.CurrentDomain.BaseDirectory));
    c.DescribeAllEnumsAsStrings();
  })

http://wmpratt.com/swagger-and-asp-net-web-api-part-1/

এখানে চিত্র বর্ণনা লিখুন

এটি রিলিজ কনফিগারেশনের পাশাপাশি ডিবাগ কনফিগারেশনে সেট করতে হয়েছিল।


0

যদি <deployment retail="true"/>আপনার .NET ফ্রেমওয়ার্কের মেশিনকনফিগ থাকে তবে আপনি বিশদ ত্রুটির বার্তা দেখতে পাবেন না। সেটিংসটি মিথ্যা, না উপস্থিত তা নিশ্চিত করুন।


0

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

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