SORU
31 Ocak 2009, CUMARTESİ


ASP.NET MVC bir eylemden HTTP 404 bir yanıt göndermek için doğru yolu nedir?

Eğer rota verilir

{FeedName}/{İtemPermalink}

eski: //Blog Merhaba Dünya

Eğer öğe yok eğer doğru değilse, bir 404 dönmek istiyorum. ASP.NET MVC bunu yapmak için doğru yolu nedir?

CEVAP
1 ŞUBAT 2009, Pazar


Kalçadan ateş (kovboy kodlama ;-)), böyle bir şey öneririm

Denetleyici:

public class HomeController : Controller
{
	public ActionResult Index()
	{
		return new HttpNotFoundResult("This doesn't exist");
	}
}

< / ^ hr .

HttpNotFoundResult:

using System;
using System.Net;
using System.Web;
using System.Web.Mvc;

namespace YourNamespaceHere
{
    /// <summary>An implementation of <see cref="ActionResult" /> that throws an <see cref="HttpException" />.</summary>
    public class HttpNotFoundResult : ActionResult
    {
        /// <summary>Initializes a new instance of <see cref="HttpNotFoundResult" /> with the specified <paramref name="message"/>.</summary>
        /// <param name="message"></param>
        public HttpNotFoundResult(String message)
        {
            this.Message = message;
        }

        /// <summary>Initializes a new instance of <see cref="HttpNotFoundResult" /> with an empty message.</summary>
        public HttpNotFoundResult()
            : this(String.Empty) { }

        /// <summary>Gets or sets the message that will be passed to the thrown <see cref="HttpException" />.</summary>
        public String Message { get; set; }

        /// <summary>Overrides the base <see cref="ActionResult.ExecuteResult" /> functionality to throw an <see cref="HttpException" />.</summary>
        public override void ExecuteResult(ControllerContext context)
        {
            throw new HttpException((Int32)HttpStatusCode.NotFound, this.Message);
        }
    }
}
// By Erik van Brakel, with edits from Daniel Schaffer :)

Bu yaklaşım kullanarak çerçeve standartları. Zaten bu sadece başka bir geliştirici daha sonra sizin kodu korumak (nerede yaşadığını bilen psikopat biliyorsun) gözünde çerçevesinde uzanacak kadar orada bir HttpUnauthorizedResult var.

Eğer bu yaklaşım bir şey (çok basit neredeyse görünüyor) özlüyor bilmiyorum çünkü reflektör Meclisi HttpUnauthorizedResult nasıl elde edildiğini görmek için içine bakmak için kullanabilirsiniz.

< / ^ hr .

Reflektör, HttpUnauthorizedResult şimdi bakmak için kullandım. 0x191 yanıtı StatusCode (401) ayar oldun sanırım onlar. Bu 401, yeni bir değer olarak 404 kullanarak çalışmasına rağmen Firefox sadece boş bir sayfa alıyorum zaten. Internet Explorer varsayılan 404 (gerçi ASP.NET sürümü değil) gösterir. Bu webdeveloper Haritayı kullanarak 404 Bulunamadı yanıt olan FF, başlıkları inceledim araç. Sadece olabilir bir şey FF yanlış.

< / ^ hr .

Bu varlık, Jeff yaklaşımı ÖPÜCÜK iyi bir örnek olduğunu düşünüyorum. " dedi. Eğer gerçekten bu örnek ayrıntı ihtiyacın olursa, onun yöntemi de gayet iyi çalışıyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007
  • sk8ingis4me

    sk8ingis4me

    16 Mart 2006
  • THELIFEOFPRICE

    THELIFEOFPRI

    16 Mart 2011