কিভাবে এএসপি.এনইটি এমভিসি 3 নিয়ামক থেকে 200 এইচটিটিপি স্থিতির কোডটি ফেরত পাবেন


217

আমি একটি অ্যাপ্লিকেশন লিখছি যা তৃতীয় পক্ষের পরিষেবা থেকে পোস্টের ডেটা গ্রহণ করছে।

এই ডেটা পোস্ট করা হলে আমাকে অবশ্যই 200 টি এইচটিপি স্থিতির কোডটি ফিরিয়ে দিতে হবে।

আমি আমার নিয়ামকের কাছ থেকে কীভাবে এটি করতে পারি?

উত্তর:


390

আপনার নিয়ামকটিতে আপনি এই জাতীয় কোনও HTTPStatusCodeResult ফিরিয়ে আনবেন ...

[HttpPost]
public ActionResult SomeMethod(...your method parameters go here...)
{
   // todo: put your processing code here

   //If not using MVC5
   return new HttpStatusCodeResult(200);

   //If using MVC5
   return new HttpStatusCodeResult(HttpStatusCode.OK);  // OK = 200
}

14
অথবা বরং "নতুন HttpStatusCodeResult ((int) HttpStatusCode.OK) ফিরিয়ে দিন;"
ড্যান

1
@ উদ্যান, এটির দরকার নেই। ওভারলোডগুলি হ'ল intপাশাপাশি HttpStatusCode
মেমার্ক

11
একটি 204 স্থিতি কোডটি ফিরে আসার জন্য এটি করুন: নতুন HttpStatusCodeResult (HttpStatusCode.NoContent) ফিরিয়ে দিন;
ডেভিড সিলভা স্মিথ

1
@ মেমার্ক, এটি কাজ করার জন্য আমাকে কাস্ট করতে হয়েছিল। .NET 4 এবং MVC 3 ব্যবহার করে আমাকে এমন একটি ওভাররাইড সরবরাহ করা হয়নি যা একটি এইচটিপিস্ট্যাটাসকোড নিতে পারে।
শন দক্ষিণ

@ শ্যাশনসথ, দস্তাবেজগুলিতে কোন ভার্সনটি এই ওভারলোডটি নিয়েছে সে সম্পর্কে আমি কোনও তথ্য খুঁজে পাচ্ছি না। msdn.microsoft.com/en-us/library/hh413957(v=vs.118).aspx
MEMark

52

সফল অনুরোধের জন্য 200 কেবলমাত্র সাধারণ HTTP শিরোনাম। তাহলে যে সব আপনার যা দরকার, ঠিক নিয়ন্ত্রক থাকেreturn new EmptyResult();


3
HttpStatusCodeResult(...)পরিবর্তে আপনার ব্যবহার করা উচিত কারণ এটি আপনি কী অর্জন করার চেষ্টা করছেন তা অনেক বেশি স্পষ্ট। গৃহীত উত্তর অনুযায়ী।
বেন

42

আপনি কেবল নীচের মত 200 এর প্রতিক্রিয়ার স্থিতি কোডটি সেট করতে পারেন

public ActionResult SomeMethod(parameters...)
{
   //others code here
   ...      
   Response.StatusCode = 200;
   return YourObject;  
}

10
ভোট দিন, কারণ এই তুমি ভালো শুধু স্থিতি কোড হিসাবে আবার অন্যান্য তথ্য প্রেরণ করতে অনুমতি দেয়
Avrohom Yisroel

22
    [HttpPost]
    public JsonResult ContactAdd(ContactViewModel contactViewModel)
    {
        if (ModelState.IsValid)
        {
            var job = new Job { Contact = new Contact() };

            Mapper.Map(contactViewModel, job);
            Mapper.Map(contactViewModel, job.Contact);

            _db.Jobs.Add(job);

            _db.SaveChanges();

            //you do not even need this line of code,200 is the default for ASP.NET MVC as long as no exceptions were thrown
            //Response.StatusCode = (int)HttpStatusCode.OK;

            return Json(new { jobId = job.JobId });
        }
        else
        {
            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return Json(new { jobId = -1 });
        }
    }

ঠিক আমার ব্যবহার মামলা, JSON বস্তু ফিরে কিন্তু চেয়েছিলেন HTTP_STATUS_CODE সরবরাহ
sobelito

ওয়েবএপিআই ফিরিয়ে দেওয়ার স্থিতি কোডগুলির জন্য, ব্যবহার করুন: নতুন স্ট্যাটাসকোড়সাল্ট (HttpStatusCode.NotModified, অনুরোধ);
জেমস জয়েস

সর্বোত্তম উত্তর হিসাবে এটি সমস্ত ব্যবহারের
কেসগুলিকে

7

নেট নেটওয়ার্কে এটি করার উপায়টি (লেখার সময়) নিম্নরূপ:

public async Task<IActionResult> YourAction(YourModel model)
{
    if (ModelState.IsValid)
    {
        return StatusCode(200);
    }

    return StatusCode(400);
}

StatusCode পদ্ধতি আয় এক ধরনের StatusCodeResult যা প্রয়োগ IActionResult এবং এইভাবে আপনার কর্ম একটি রিটার্ন টাইপ হিসাবে ব্যবহার করা যাবে।

রিফ্যাক্টর হিসাবে, আপনি এইচটিটিপি স্থিতি কোড এনামের মতো একটি কাস্ট ব্যবহার করে পাঠযোগ্যতার উন্নতি করতে পারেন:

return StatusCode((int)HttpStatusCode.OK);

তদ্ব্যতীত, আপনি কিছু বিল্ট ইন রেজাল্ট টাইপ ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

return Ok(); // returns a 200
return BadRequest(ModelState); // returns a 400 with the ModelState as JSON

সূত্র। স্ট্যাটাসকোড়সাল্ট - https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.statuscoderesult?view=aspnetcore-2.1

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