ASP.NET WEB API her gelen istek (URL) okuma. Bu çerçevede, gelen her talebi (url) bir anahtar için kontrol ettik ve bir mülke atadık. BizOnActionExecuting()
bizim özel mantık sağlamak için geçersiz Controller
sınıftan & türetilmiş özel bir sınıf yarattı.Ben <code>ASP.NET MVC</code> çerçeve kullanıyordum
nasıl ASP.NET WEB API aynı elde edebilirsiniz ?
//Implementation from ASP.NET MVC
public class ApplicationController : Controller
{
public string UserID { get; set; }
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!string.IsNullOrEmpty(Request.Params["uid"]))
UserID = Request.Params["uid"];
base.OnActionExecuting(filterContext);
}
}
Ben ASP.NET WEB API çalıştık Ne: - Bu çalışma olmasına rağmen, bu doğru bir yaklaşım olup olmadığını merak?
ActionFilterAttribute sınıfını & devralan başka bir sınıf oluşturuldu taban kontrolörü
public class BaseApiController : ApiController
{
public string UserID { get; set; }
}
düzenlendi Ben
public class TokenFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
var queryString = actionContext.Request.RequestUri.Query;
var items = HttpUtility.ParseQueryString(queryString);
var userId = items["uid"];
((MyApi.Data.Controllers.BaseApiController)(actionContext.ControllerContext.Controller)).UserID = userId;
}
}
Şimdi bu sınıf
kayıt() OnActionExecuting geçersizpublic static void Register(HttpConfiguration config)
{
config.Filters.Add(new TokenFilterAttribute());
}
Hızlı yardım için teşekkür ederiz. Soruyu göndermeden önce bu URL'yi kontrol ediyordum ve durumumun bunun nasıl yardımcı olacağını bilmiyordum. Lütfen bana daha fazla bilgi verebilir misiniz? – SharpCoder
Biraz kod eklemeyi ve sizin için daha net hale getirmeyi denedim. Kullanım durumunuz nedir? Her bir isteğin neden Kullanıcı Kimliği ayıklamasına ihtiyacınız var? – Regfor
İsteğin bazıları 'userId 'sorgu dizesi olarak geçirilecek. Tüm istediğim, her isteği kontrol etmek ve sorgu dizesi 'userId' ise, onu okuyacağım ve 'BaseController' içinde' UserID' özelliğine atayacağım. 'BaseController', ApiController'den miras alacaktır. Ve tüm denetleyicilerim “BaseController” dan miras kalacaklar. Hangi 'Kullanıcı Kimliği' özelliği tüm kontrolörler için kullanılabilir olmasını sağlayacaktır. Sorun "DelegatingHandler", ASP.NET MVC'de bulunan "IActionFilter" arabiriminin aksine bir sınıftır. – SharpCoder