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

  • 30GB

    30GB

    14 AĞUSTOS 2006
  • FullMag

    FullMag

    15 ŞUBAT 2007
  • GoldgenieOfficial

    GoldgenieOff

    23 Temmuz 2009