আমি যদি ম্যানুয়ালি রেসপন্স.স্ট্যাটাসকোড সেট করি তবে আইআইএস আমার প্রতিক্রিয়া সামগ্রীটি ওভাররাইড করছে


20

সমস্যা

আমি যখন HTTP Statusআমার প্রতিক্রিয়া প্রবাহটি ম্যানুয়ালি সেট করি তখন বলুন 404বা 503আইআইএস আমার কাস্টম ভিউটির পরিবর্তে স্টক আইআইএস সামগ্রী / ভিউ রেন্ডার করে।

আমি যখন ওয়েব ডেভলপমেন্ট সার্ভারের (এ কেএ। ক্যাসিনি ) এটি করি তখন এটি সঠিকভাবে কাজ করে (অর্থাত আমার সামগ্রী প্রদর্শিত হয় এবং response.statuscode== আমার প্রবেশ করা ডেটা)।

আমি কি এই আচরণকে ওভাররাইড করতে পারি?

কিভাবে প্রতিলিপি

একটি ডিফল্ট এএসপি.নেট এমভিসি 1 ওয়েব অ্যাপ্লিকেশন করুন। নিম্নলিখিত রুট যুক্ত করুন

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

    routes.MapRoute(
        "Default",
        "{*catchall}",
        new { controller = "Home", action = "Index" }
        );

}

এখন হোম কন্ট্রোলারের সূচক পদ্ধতিটি এর সাথে প্রতিস্থাপন করুন ...

[HandleError]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        Response.StatusCode = 404;
        return View();
    }
}

উত্তর:


18

ঠিক আছে - উত্তর খুঁজে পেয়েছি। যেমনটি আমি প্রত্যাশা করেছি, আইআইএস আমার 200 টি নয় এমন প্রতিক্রিয়া হাইজ্যাক করছে। নিশ্চিত নয় (যেমন। আমি নিশ্চিত নই যে এটি ডিফল্ট আচরণ কিনা বা এটি মেশিন কনফিগারেশনে আপডেট হওয়া দলের সদস্যদের মধ্যে একটির সেটিংয়ের কারণে ...)।

যাইহোক, এখানে মূল কীটি আইআইএস-কে বলছে যে কোনও 200-নন স্থিতির ফলাফলের সংস্থানগুলি পরিচালনা করবেন না

কিভাবে? ওয়েব কনফিগ কনফিগার এন্ট্রি।

<system.webServer>
    <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"/>
    .... snipped other IIS relevant elements ... 
</system.webServer>

এখন, এখানে চাবি existingResponse="PassThrough"। এই খারাপ ছেলে আইআইএসকে এইচটিটিপি স্থিতি কোড! 200 থাকলে আমার সংস্থানগুলি একা ছেড়ে যেতে বলে।

আরও তথ্য চান? নিশ্চিত: অফিসিয়াল আইআইএস ওয়েবসাইটে এই উপাদান সম্পর্কে আরও পড়ুন


httpErrors মত হল ত্রুটি পৃষ্ঠাগুলি -> 500 -> সম্পাদনা বৈশিষ্ট্য সেটিংস -> "বিশদ ত্রুটিগুলি" _http: //stackoverflow.com/questions/2640526/detailed-500-error-message-asp-iis-7-5_
Kiquenet

আআআআহহহহহ .. শুভ ওল 'আইআইএস সহজ জিনিসগুলি সহজ করে তুলছে :)
এআর

4

এটিকে বাইপাস করার আরেকটি উপায় হ'ল আপনার এএসপি অ্যাপ্লিকেশনটিতে নিম্নলিখিত কোডটি চালানো:

Response.TrySkipIisCustomErrors = true;

সূত্র: /programming//a/21271085/238753


-2

সাধারণভাবে এই পদ্ধতির সাথে যত্নশীল হন। 404 স্থিতিতে আপনার কোনও ভিউ রেন্ডার করা উচিত নয়।

  • আমি মনে করি যখন কোনও ত্রুটি স্থিতির কোডটি ফিরে আসে, তখন আইআইএস স্থিতির ত্রুটি পৃষ্ঠাটি যা এর সাথে নিবন্ধিত হয় তা ফিরিয়ে দেয় - প্রক্রিয়াজাতকরণ থেকে আউটপুট নয়। সুতরাং, আপনি সেখানে একটি HTML পৃষ্ঠা রাখতে পারেন (বা একটি এসপেক্স পৃষ্ঠার লিঙ্ক)। http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx একটি ত্রুটি পৃষ্ঠা কীভাবে সেট আপ করতে হয় তার একটি সুন্দর ব্যাখ্যা রয়েছে।

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


1
আমি কেন 404 এ একটি ভিউ রেন্ডার করব না? আমি একটি কাস্টম পৃষ্ঠা চাই এবং আমার পৃষ্ঠায় কিছু যুক্তির প্রয়োজন হতে পারে (স্ট্যাটিক এইচটিএমএল ত্রুটির পৃষ্ঠার পরিবর্তে)।
বিশুদ্ধ.ক্রোম

এমভিসি মডেলটি আইআইএস ত্রুটি পৃষ্ঠা মডেলের সাথে একীকরণ করে না ec এটা সহজ. আপনি এটির জন্য আইআইএস মডেলটিতে ফিরে যেতে চান ve 404 মামলার জন্য একটি পৃষ্ঠার URL নিবন্ধন করুন। কিছু গতিশীল পৃষ্ঠা সেখানে রাখুন - আমি নিশ্চিত নই যে এটি আসলে এমভিসি ইউআরএলকে নির্দেশ করবে কিনা, তবে এটি 404 পৃষ্ঠার নিবন্ধনে উত্পন্ন হবে।
টমটম

ত্রুটিপূর্ণ. বেশিরভাগ ব্রাউজারগুলি 404 এইচটিটিপি স্থিতির সাথে ফিরে আসা পৃষ্ঠার সামগ্রী রেন্ডার করে। সব না, তবে বেশিরভাগ। এছাড়াও, আইআইএস ডিফল্টরূপে .NET সাইটে যে কোনও কোড দ্বারা সেট করা স্থিতি কোডটিকে সম্মান করবে, যতক্ষণ না পাইপলাইনে পরে অন্য কোনও মডিউল সেটিকে ওভাররাইড করে না। এই ক্ষেত্রে এটি কীভাবে ঘটছিল সে সম্পর্কে প্রশ্ন লেখকের উত্তর দেখুন।
মুফাসা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.