SORU
7 Mart 2012, ÇARŞAMBA


ASP.NET Web API Kullanarak erişme Oturum

Oturum ve GERİSİ aynen el ele gitmez ama bu mümkün değil oturum durumu yeni Web API kullanarak erişmek için olduğunu fark ettim? HttpContext.Current.Session her zaman null olur.

CEVAP
9 Temmuz 2013, Salı


Şu anda MVC4 bu çözümü kullanıyorum ve gayet iyi gidiyor:

WebApiConfig.cs

public static class WebApiConfig
{
    public static string UrlPrefix         { get { return "api"; } }
    public static string UrlPrefixRelative { get { return "~/api"; } }

    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: WebApiConfig.UrlPrefix   "/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

Global.asax.cs

public class MvcApplication : System.Web.HttpApplication
{
    ...

    protected void Application_PostAuthorizeRequest()
    {
        if (IsWebApiRequest())
        {
            HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
        }
    }

    private bool IsWebApiRequest()
    {
        return HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.StartsWith(WebApiConfig.UrlPrefixRelative);
    }

}

Bu çözüm AJAX arama yapmak için javascript Bankası URL çağırabileceğimiz bu avantaj vardır:

_Layout.cshtml

<body>
    @RenderBody()

    <script type="text/javascript">
        var apiBaseUrl = '@Url.Content(ProjectNameSpace.WebApiConfig.UrlPrefixRelative)';
    </script>

    @RenderSection("scripts", required: false) 

ve o zaman bizim içinde Javascript dosyaları/code oturum erişebilir webapi aramalar yapabiliriz:

$.getJSON(apiBaseUrl   '/MyApi')
   .done(function (data) {
       alert('session data received: '   data.whatever);
   })
);

Vay!

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Flash CS6 Video Tutorials for Beginners (Actionscript 3 Gaming)

    Flash CS6 Vi

    14 EYLÜL 2012
  • The Bad Tutorials

    The Bad Tuto

    6 EKİM 2009
  • Vintendo Power

    Vintendo Pow

    2 Ocak 2007