{"id":33629,"date":"2013-07-08T09:30:00","date_gmt":"2013-07-08T06:30:00","guid":{"rendered":"https:\/\/fatihboy.com\/?p=33629"},"modified":"2021-06-19T15:29:40","modified_gmt":"2021-06-19T12:29:40","slug":"windows-azure-uzerinde-owin","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/windows-azure-uzerinde-owin\/","title":{"rendered":"Windows Azure \u00dczerinde OWIN"},"content":{"rendered":"<p>&nbsp;&nbsp; OWIN makale serisinde sizlere OWIN hakk\u0131ndaki detaylar\u0131 vermeye \u00e7al\u0131\u015f\u0131rken, Katana projesi yard\u0131m\u0131yla da elimden geldi\u011fince farkl\u0131 \u00f6rnekler payla\u015fmay\u0131 hedefledim. Daha \u00f6nce Katana \u00fczerinde, IIS \u00fczerinde, Konsol ve Windows Forms uygulamalar\u0131m\u0131zda Katana yard\u0131m\u0131yla sundu\u011fumuz OWIN katmanlar\u0131 ve web uygulamalar\u0131m\u0131z\u0131 bu makalemde bulutta sunmay\u0131 planl\u0131yorum. Hedefimiz <strong>Windows Azure \u00fczerinde OWIN<\/strong> katmanlar\u0131m\u0131z\u0131 ve uygulamalar\u0131m\u0131z\u0131 sunmak\u2026<\/p>\n\n\n\n<p>&nbsp;&nbsp; Windows Azure \u00fczerinde Katana yard\u0131m\u0131yla OWIN deste\u011fi sunmak temelde bir Windows hizmeti \u00fczerinde sunmaktan farkl\u0131 de\u011fil asl\u0131nda. Bu sebeple <strong>Azure Worker Role<\/strong> \u00fczerinden gitmek do\u011fru olacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu makaleyi okuyorsan\u0131z Windows Azure deneyiminizin oldu\u011funu varsay\u0131yorum; ama yine de hat\u0131rlatmakta fayda var, ba\u015flarken <a href=\"http:\/\/go.microsoft.com\/fwlink\/?linkid=254364&amp;clcid=0x409\" target=\"_blank\" rel=\"noopener noreferrer\">Windows Azure SDK<\/a>\u2019s\u0131n\u0131n bilgisayar\u0131n\u0131zda kurulu oldu\u011funa emin olun\u2026<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/Visual-Studio-2012-icin-Azure-SDK.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/Visual-Studio-2012-icin-Azure-SDK_thumb.png\" alt=\"Visual Studio 2012 i\u00e7in Windows Azure SDK\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; \u0130\u015fe \u00f6ncelikle projemizi olu\u015fturarak ba\u015flayal\u0131m;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/windows-azure-projesi.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/windows-azure-projesi_thumb.png\" alt=\"Windows Azure Projemizi olu\u015ftural\u0131m\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Projemizi olu\u015ftururken bizi kar\u015f\u0131layan <strong>New Windows Azure Cloud Service<\/strong> diyalo\u011funda listemize sadece <strong>Worker Role<\/strong>\u2019\u00fc ekliyoruz;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/new-windows-azure-cloud-service.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/new-windows-azure-cloud-service_thumb.png\" alt=\"&quot;New Windows Azure Cloud Service&quot; diyalo\u011fu\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Proje a\u00e7\u0131ld\u0131ktan sonra s\u0131ra geliyor NuGet paketlerini kurmaya;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"msdos\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Install-Package Microsoft.Owin.Hosting -Pre\nInstall-Package Microsoft.Owin.Host.HttpListener -Pre\nInstall-Package Microsoft.AspNet.WebApi.Owin -Pre\nInstall-Package Microsoft.Owin.StaticFiles -Version 0.20-alpha-20220-88 -Pre<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Listeden de anlayaca\u011f\u0131n\u0131z \u00fczere Azure Worker Role\u2019\u00fcm\u00fczde statik dosyalar kadar ASP.Net Web API\u2019yi de kullanmay\u0131 planl\u0131yorum. Sunucu olarak da her zaman ki gibi HttpListener kullanaca\u011f\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; NuGet paketlerinin kurulmas\u0131 sonras\u0131 s\u0131rada servisimizin \u00e7\u0131k\u0131\u015f yapaca\u011f\u0131 u\u00e7 nokta tan\u0131mlar\u0131n\u0131n yap\u0131lmas\u0131nda. Endpoint tan\u0131mlamalar\u0131 sayesinde i\u00e7erideki 80 (HTTP) portunu d\u0131\u015f d\u00fcnyaya yine 80 (HTTP) portuyla a\u00e7aca\u011f\u0131z. Bu ayar i\u00e7in Enterprisecoding.AzureOWIN projesi Roles klas\u00f6r\u00fc alt\u0131nda yer alan OWINRole\u2019e gelerek bu rol\u00fcn \u00f6zelliklerini a\u00e7al\u0131m.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/endpoint-ayarlari.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/endpoint-ayarlari_thumb.png\" alt=\"Endpoint ayarlar\u0131\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; A\u00e7\u0131lan pencereden <strong>Endpoints<\/strong> segmesine gelerek <strong>Add Endpoint<\/strong> butonu yard\u0131m\u0131yla a\u015fa\u011f\u0131daki \u00f6zelliklerle yeni bir endpoint ekleyelim;<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Name<\/strong><\/td><td>OWINHizmeti<\/td><\/tr><tr><td><strong>Type<\/strong><\/td><td>Input<\/td><\/tr><tr><td><strong>Protocol<\/strong><\/td><td>http<\/td><\/tr><tr><td><strong>Public Port<\/strong><\/td><td>80<\/td><\/tr><tr><td><strong>Private Port<\/strong><\/td><td>80<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Bu basit ayarlardan sonra s\u0131ra geldi standart OWIN yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 takip ederek katmanlar\u0131m\u0131z\u0131 belirlemeye. Her zamanki gibi \u00f6ncelikle OWINRole projemizde <strong>Startup <\/strong>s\u0131n\u0131f\u0131m\u0131z\u0131 olu\u015ftural\u0131m;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System.Web.Http;\nusing Owin;\n\nnamespace OWINRole {\n    internal class Startup {\n        public void Configuration(IAppBuilder app) {\n            var config = new HttpConfiguration();\n\n            config.Routes.MapHttpRoute(\n                \"Default\",\n                \"api\/{controller}\/{id}\",\n                new {id = RouteParameter.Optional});\n\n            app.UseWebApi(config);\n        }\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Test i\u00e7in se\u00e7ti\u011fim controller ise <a href=\"\/en\/?p=11979\">bir \u00f6nceki makalemde<\/a> kulland\u0131\u011f\u0131m <strong>YapilacaklarController<\/strong> olacak;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System.Collections.Generic;\nusing System.Web.Http;\n\nnamespace OWINController {\n    public class YapilacaklarController : ApiController {\n        public IEnumerable&lt;Yapilacak> Get() {\n            return new[] {\n                new Yapilacak { Id = 1, Content = \"OWIN makaleleri  yaz\", Tamamlandi = true },\n                new Yapilacak { Id = 2, Content = \"Roslyn scripting \u00f6rne\u011fi kodla\", Tamamlandi = true },\n                new Yapilacak { Id = 3, Content = \"Geri bildirimleri yan\u0131tla\", Tamamlandi = false },\n                new Yapilacak { Id = 4, Content = \"Tatilin tad\u0131n\u0131 \u00e7\u0131kar\", Tamamlandi = false }\n            };\n        }\n    }\n\n    public class Yapilacak {\n        public int Id;\n        public string Content;\n        public bool Tamamlandi;\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; \u015eimdi s\u0131ra geldi sunucumuzu ba\u015flatmaya. Bunun i\u00e7in <strong>WorkerRole<\/strong> s\u0131n\u0131f\u0131m\u0131z i\u00e7erisine <strong>WebApp<\/strong> \u00f6rne\u011finin referans\u0131n\u0131 tutmak i\u00e7in <strong>IDisposable<\/strong> t\u00fcr\u00fcnden <strong>webApp<\/strong> de\u011fi\u015fkenini ekleyelim. Bunun nedeni, di\u011fer projelerimizden farkl\u0131 olarak bir Azure Worker Role\u2019\u00fcn ayn\u0131 Windows Hizmetlerinde oldu\u011fu gibi uygulamay\u0131 ba\u015flatan ve bitiren noktalar\u0131n iki ayr\u0131 fonksiyon olmas\u0131d\u0131r. bu sebeple t\u00fcm s\u00fcreci tek bir using blo\u011fu i\u00e7ine alamay\u0131z. <strong>OnStart<\/strong> ile hizmeti ba\u015flatan kodu yazarken, <strong>OnStop<\/strong> ile bu hizmeti sonland\u0131r\u0131p kulland\u0131\u011f\u0131m\u0131z kaynaklar\u0131 da i\u015fletim sistemine geri iade etmeliyiz. \u00d6ncelikle hizmetimizi ba\u015flatal\u0131m;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public override bool OnStart() {\n    \/\/ Set the maximum number of concurrent connections\n    ServicePointManager.DefaultConnectionLimit = 12;\n\n    \/\/ For information on handling configuration changes\n    \/\/ see the MSDN topic at http:\/\/go.microsoft.com\/fwlink\/?LinkId=166357.\n\n    webApp = WebApp.Start&lt;Startup&lt;(\"[URL]\");\n\n    return base.OnStart();\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Dikkat ederseniz hizmetimizin a\u00e7\u0131laca\u011f\u0131 url\u2019yi belirtmedim. Bunun nedeni derleme s\u0131ras\u0131nda Azure Worker Role\u2019\u00fcm\u00fcze Windows Azure taraf\u0131ndan hangi endpoint\u2019in atanaca\u011f\u0131n\u0131 bilmiyor olmam. Bu bilgileri yap\u0131land\u0131rmadan <strong>RoleEnvironment<\/strong> yard\u0131m\u0131yla a\u015fa\u011f\u0131daki gibi \u00e7ekebiliriz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var ucNokta = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[\"OWINHizmeti\"];<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Son haliyle OnStart fonksiyonumuz a\u015fa\u011f\u0131daki \u015fekilde olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public override bool OnStart() {\n    \/\/ Set the maximum number of concurrent connections\n    ServicePointManager.DefaultConnectionLimit = 12;\n\n    var ucNokta = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[\"OWINHizmeti\"];\n\n    webApp = WebApp.Start&amp;lt;Startup&amp;gt;(ucNokta.Protocol + \":\/\/\" +ucNokta.IPEndpoint);\n\n    return base.OnStart();\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Hizmetimizin durduruldu\u011fu OnStop fonksiyonu i\u00e7erisinde de servisimize ait kaynaklar\u0131 i\u015fletim sistemine iade etmeliyiz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">webApp.Dispose();\nwebApp = null;<\/pre>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp; Son haliyle WorkerRole s\u0131n\u0131f\u0131m\u0131z a\u015fa\u011f\u0131daki \u015fekilde olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System;\nusing System.Diagnostics;\nusing System.Net;\nusing System.Threading;\nusing Microsoft.Owin.Hosting;\nusing Microsoft.WindowsAzure.ServiceRuntime;\n\nnamespace OWINRole {\n    public class WorkerRole : RoleEntryPoint {\n        private IDisposable webApp;\n\n        public override void Run() {\n            \/\/ This is a sample worker implementation. Replace with your logic.\n            Trace.WriteLine(\"OWINRole entry point called\", \"Information\");\n\n            while (true) {\n                Thread.Sleep(10000);\n                Trace.WriteLine(\"Working\", \"Information\");\n            }\n        }\n\n        public override bool OnStart() {\n            \/\/ Set the maximum number of concurrent connections\n            ServicePointManager.DefaultConnectionLimit = 12;\n\n            var ucNokta = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[\"OWINHizmeti\"];\n\n            webApp = WebApp.Start&lt;Startup>(ucNokta.Protocol + \":\/\/\" + ucNokta.IPEndpoint);\n\n            return base.OnStart();\n        }\n\n        public override void OnStop() {\n            if (webApp != null) {\n                webApp.Dispose();\n                webApp = null;\n            }\n\n            base.OnStop();\n        }\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; \u015eimdi s\u0131ra geldi statik i\u00e7eri\u011fimize.. Bunun i\u00e7in yine <a href=\"\/en\/?p=11979\">bir \u00f6nceki makalemde<\/a> kulland\u0131\u011f\u0131m index.html\u2019i kullanaca\u011f\u0131m;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!DOCTYPE html&gt;\n\n&lt;html lang=&quot;en&quot; xmlns=&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;&gt;\n    &lt;head&gt;\n        &lt;meta charset=&quot;utf-8&quot; \/&gt;\n        &lt;title&gt;Enterprisecoding - OWIN Aray&uuml;z &Ouml;rne\u011fi&lt;\/title&gt;\n        &lt;script src=&quot;http:\/\/code.jquery.com\/jquery-2.0.0.min.js&quot;&gt;&lt;\/script&gt;\n    &lt;\/head&gt;\n    &lt;style&gt;\n        \/* http:\/\/meyerweb.com\/eric\/tools\/css\/reset\/\n   v2.0 | 20110126\n   License: none (public domain)\n *\/\n\nhtml, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {\n    margin: 0;\n    padding: 0;\n    border: 0;\n    font-size: 100%;\n    font: inherit;\n    vertical-align: baseline;\n}\n\narticle, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block }\n\nbody { line-height: 1 }\n\nol, ul { list-style: none }\n\nblockquote, q { quotes: none }\n\nblockquote:before, blockquote:after, q:before, q:after {\n    content: &#039;&#039;;\n    content: none;\n}\n\ntable {\n    border-collapse: collapse;\n    border-spacing: 0;\n}\n\n\/* * Copyright (c) 2012 Thibaut Courouble\n * http:\/\/www.webinterfacelab.com\n *\n * Licensed under the MIT License:\n * http:\/\/www.opensource.org\/licenses\/mit-license.php\n   ================================================== *\/\n\n\/* ========================================================\n   Page\n   =====================================================\n   ================================================== *\/\n\nbody {\n    background: #f8f6f6;\n    color: #404040;\n    font-family: &#039;Lucida Grande&#039;, Verdana, sans-serif;\n    font-size: 13px;\n    font-weight: normal;\n    line-height: 20px;\n}\n\na {\n    color: #1e7ad3;\n    text-decoration: none;\n}\n\na:hover { text-decoration: underline }\n\n.container {\n    margin: 50px auto;\n    width: 380px;\n}\n\n\/* ========================================================\n   Icons\n   =====================================================\n   ================================================== *\/\n\n[class^=&quot;icon-&quot;], [class*=&quot; icon-&quot;] {\n    display: inline-block;\n    width: 12px;\n    height: 12px;\n    vertical-align: -2px;\n    margin-right: 2px;\n    background-image: url(&quot;http:\/\/demo.webinterfacelab.com\/14-to-do-list\/img\/sprite.png&quot;);\n    background-repeat: no-repeat;\n    text-indent: 100%;\n    white-space: nowrap;\n    overflow: hidden;\n}\n\n.icon-check { background-position: 0 0 }\n\n.icon-add { background-position: -12px 0 }\n\n.icon-delete { background-position: -24px 0 }\n\n.icon-settings { background-position: -36px 0 }\n\n.icon-previous { background-position: -48px 0 }\n\n.icon-next { background-position: -60px 0 }\n\n\/* ========================================================\n   Todo List\n   =====================================================\n   ================================================== *\/\n\n.todo {\n    position: relative;\n    width: 260px;\n    margin: 0 auto;\n    padding: 12px 0;\n    background: #fff;\n    border: 1px solid;\n    border-color: #dfdcdc #d9d6d6 #ccc;\n    border-radius: 2px;\n    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.todo:before, .todo:after {\n    content: &#039;&#039;;\n    position: absolute;\n    z-index: -1;\n    height: 4px;\n    background: #fff;\n    border: 1px solid #ccc;\n    border-radius: 2px;\n}\n\n.todo:after {\n    left: 0;\n    right: 0;\n    bottom: -3px;\n    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.todo:before {\n    left: 2px;\n    right: 2px;\n    bottom: -5px;\n    border-color: #c4c4c4;\n    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n    -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n}\n\n.lt-ie9 .todo:before, .lt-ie9 .todo:after {\n    height: 1px;\n    border-top: 0;\n}\n\n.todo-list { border-top: 1px solid #e6ebed }\n\n.todo-list:before {\n    content: &#039;&#039;;\n    width: 3px;\n    z-index: 2;\n    border: 1px solid #f2e3df;\n    border-width: 0 1px;\n    position: absolute;\n    top: 0px;\n    bottom: 0px;\n    left: 35px;\n}\n\n.todo-list li {\n    position: relative;\n    padding: 7px 15px 7px 50px;\n    line-height: 21px;\n    font-size: 12px;\n    color: #8b8f97;\n    border-bottom: 1px solid #e6ebed;\n}\n\ninput[type=checkbox] {\n    display: none;\n}\n\ninput[type=checkbox]:checked + .toggle:after{\n    opacity: 1;\n}\n\n.todo-list .toggle {\n    display: block;\n    height: 35px;\n    width: 35px;\n    position: absolute;\n    top: 0px;\n    bottom: 0px;\n    left: 0px;\n    text-indent: 100%;\n    overflow: hidden;\n    cursor: pointer;\n}\n\n.toggle:after {\n    content: &#039;&#039;;\n    position: absolute;\n    position: absolute;\n    width: 7px;\n    height: 3px;\n    background: transparent;\n    top: 14px;\n    left: 13px;\n    border: 2px solid #aaa;\n    border-top: none;\n    border-right: none;\n\n    -webkit-transform: rotate(-45deg);\n    -moz-transform: rotate(-45deg);\n    -o-transform: rotate(-45deg);\n    -ms-transform: rotate(-45deg);\n    transform: rotate(-45deg);\n    opacity: 0;\n}\n\n.todo-list .toggle:before {\n    content: &#039;&#039;;\n    width: 15px;\n    height: 15px;\n    background: #faf9f9;\n    border: 1px solid #6bb3ca;\n    border-radius: 2px;\n    position: absolute;\n    top: 9px;\n    left: 9px;\n    -webkit-box-shadow: 0 1px 1px #dfecf4;\n    -moz-box-shadow: 0 1px 1px #dfecf4;\n    box-shadow: 0 1px 1px #dfecf4;\n}\n\n.todo-list .toggle:hover:before {\n    -webkit-box-shadow: 0 0 3px #6bb3ca;\n    -moz-box-shadow: 0 0 3px #6bb3ca;\n    box-shadow: 0 0 3px #6bb3ca;\n}\n\n.todo-list .done .toggle:before, .todo-list .toggle:active:before {\n    border-color: #c0c0c0 #ccc #d8d8d8;\n    -webkit-box-shadow: inset 0 1px rgba(0, 0, 0, 0.05), inset 0 5px 5px rgba(0, 0, 0, 0.05);\n    -moz-box-shadow: inset 0 1px rgba(0, 0, 0, 0.05), inset 0 5px 5px rgba(0, 0, 0, 0.05);\n    box-shadow: inset 0 1px rgba(0, 0, 0, 0.05), inset 0 5px 5px rgba(0, 0, 0, 0.05);\n}\n.todo-controls {\n    margin: 0 15px 12px 50px;\n    height: 12px;\n}\n\n.todo-controls li { float: left }\n\n.todo-controls li + li { margin-left: 10px }\n\n.todo-controls .right { float: right }\n\n.todo-controls a {\n    display: block;\n    margin: 0;\n    opacity: .6;\n}\n\n.todo-controls a:hover { opacity: 1 }\n\n.todo-pagination {\n    margin: 12px 12px 0 50px;\n    height: 22px;\n}\n\n.todo-pagination li { float: left }\n\n.todo-pagination .next { float: right }\n\n.todo-pagination .next i { margin: 0 0 0 2px }\n\n.todo-pagination a, .todo-pagination span {\n    display: block;\n    line-height: 22px;\n    font-size: 11px;\n    color: #676f7f;\n}\n\n.todo-pagination a {\n    padding: 0 8px;\n    text-shadow: 0 1px #fff;\n    background: #f1f0f0;\n    border-radius: 3px;\n}\n\n.todo-pagination a:hover {\n    background: #e9e9e9;\n    text-decoration: none;\n}\n\n.todo-pagination span {\n    padding: 0 4px;\n    opacity: .3;\n}\n\n\/* ========================================================\n   About\n   =====================================================\n   ================================================== *\/\n\n.about {\n    margin: 80px auto 50px;\n    padding: 15px 20px;\n    width: 300px;\n    text-align: center;\n    color: #777;\n    text-shadow: 0 1px rgba(255, 255, 255, 0.7);\n    background: rgba(0, 0, 0, 0.05);\n    border-radius: 3px;\n}\n\n.about a {\n    padding: 1px 3px;\n    margin: 0 -1px;\n    color: #1c74c8;\n    text-decoration: none;\n    border-radius: 2px;\n}\n\n.about a:hover {\n    color: #fff;\n    text-shadow: 0 1px #0063A6;\n    background: #0090D2;\n}\n\n.links { zoom: 1 }\n\n.links:before, .links:after {\n    content: &quot;&quot;;\n    display: table;\n}\n\n.links:after { clear: both }\n\n.links a {\n    padding: 6px 0;\n    float: left;\n    width: 50%;\n    font-size: 14px;\n}\n\n.author {\n    margin-top: 15px;\n    font-size: 11px;\n}\n    &lt;\/style&gt;\n&lt;body&gt;\n    &lt;script type=&quot;text\/javascript&quot;&gt;\n        function YapilacaklariGetir() {\n            $.ajax({\n                url: &#039;\/api\/yapilacaklar&#039;,\n                type: &#039;GET&#039;,\n                dataType: &#039;json&#039;,\n                success: function (data) {\n                    YapilacaklariYaz(data);\n                },\n                error: function (x, y, z) {\n                    alert(x + &#039;\\n&#039; + y + &#039;\\n&#039; + z);\n                }\n            });\n        }\n\n        function YapilacaklariYaz(yapilacaklar) {\n            var sonuc = &quot;&quot;;\n\n            $.each(yapilacaklar, function (index, yapilacak) {\n                sonuc += yapilacak.Tamamlandi ?\n                    &quot;&lt;li class=&#039;done&#039;&gt;&lt;input type=&#039;checkbox&#039; id=&#039;todo&quot; + yapilacak.Id + &quot;&#039; checked disabled \/&gt;&quot; :\n                    &quot;&lt;li&gt;&lt;input type=&#039;checkbox&#039; id=&#039;todo&quot; + yapilacak.Id + &quot;&#039;\/&gt;&quot;;\n                sonuc += &quot;&lt;label class=&#039;toggle for=&#039;todo&quot; + yapilacak.Id + &quot;&#039;&gt;&lt;\/label&gt;&quot; + yapilacak.Content + &quot;&lt;\/li&gt;&quot;;\n            });\n\n            $(&quot;.todo-list&quot;).html(sonuc);\n\n        }\n    &lt;\/script&gt;\n    &lt;div class=&quot;container&quot;&gt;\n    &lt;section class=&quot;todo&quot;&gt;\n        &lt;ul class=&quot;todo-controls&quot;&gt;\n            &lt;li&gt;&lt;a href=&quot;javascript:void(0);&quot; class=&quot;icon-add&quot;&gt;Add&lt;\/a&gt;&lt;\/li&gt;\n            &lt;li&gt;&lt;a href=&quot;javascript:void(0);&quot; class=&quot;icon-delete&quot;&gt;Delete&lt;\/a&gt;&lt;\/li&gt;\n            &lt;li class=&quot;right&quot;&gt;&lt;a href=&quot;javascript:YapilacaklariGetir();&quot; class=&quot;icon-settings&quot;&gt;Settings&lt;\/a&gt;&lt;\/li&gt;\n        &lt;\/ul&gt;\n\n        &lt;ul class=&quot;todo-list&quot;&gt;&lt;\/ul&gt;\n\n        &lt;ul class=&quot;todo-pagination&quot;&gt;\n            &lt;li class=&quot;previous&quot;&gt;&lt;span&gt;&lt;i class=&quot;icon-previous&quot;&gt;&lt;\/i&gt; Geri&lt;\/span&gt;&lt;\/li&gt;\n            &lt;li class=&quot;next&quot;&gt;&lt;a href=&quot;javascript:void(0);&quot;&gt;\u0130leri &lt;i class=&quot;icon-next&quot;&gt;&lt;\/i&gt;&lt;\/a&gt;&lt;\/li&gt;\n        &lt;\/ul&gt;\n    &lt;\/section&gt;\n&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Dikkat ettiyseniz bu defa ajax iste\u011fini yapt\u0131\u011f\u0131m javascript kodunda Web API adresini tam vermek yerine &#8216;<em>\/api\/yapilacaklar<\/em>&#8216; \u015feklinde verdim. Bunun nedeni Worker Role\u2019\u00fcn hizmet verece\u011fi tam adresi bilmemem.. Son olarak da; \u00f6nceden oldu\u011fu gibi bu dosyay\u0131 da her derlemede \u00e7\u0131kt\u0131 klas\u00f6r\u00fcne kopyalanacak \u015fekilde ayarlayal\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu kadar\u2026 Sonras\u0131nda projemizi F5 ile ba\u015flat\u0131p yerel emulator\u2019de ba\u015flatarak web browser \u00fczerinden sonucu g\u00f6rebilirsiniz\u2026<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/worker-role-bos-sayfa.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/worker-role-bos-sayfa_thumb.png\" alt=\"Projeyi debug i\u00e7in ba\u015flat\u0131p web browser'dan sayfam\u0131z\u0131 a\u00e7t\u0131\u011f\u0131m\u0131zda kar\u015f\u0131m\u0131za uygulamam\u0131z gelecektir\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/worker-role-dolu-sayfa.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/worker-role-dolu-sayfa_thumb.png\" alt=\"Uygulamam\u0131z arkaplanda \u00e7al\u0131\u015fan ASP.Net Web API controller'\u0131m\u0131zdan ajax ile \u00e7ekti\u011fi verileri g\u00f6sterirken\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi Katan yard\u0131m\u0131yla OWIN katmanlar\u0131n\u0131 Windows Azure \u00fczerinde sunmak olduk\u00e7a kolay. T\u00fcm s\u00fcre\u00e7 Windows hizmetinde sunmakla ayn\u0131\u2026<\/p>\n\n\n\n<p><em>&nbsp;&nbsp; Makalemin devam\u0131nda haz\u0131rlad\u0131\u011f\u0131m\u0131z Azure Worker Role\u2019\u00fc Windows Azure\u2019a deploy etme ad\u0131mlar\u0131n\u0131 payla\u015faca\u011f\u0131m. Bu konuda deneyim sahibi olanlar bu k\u0131sm\u0131 ge\u00e7ebilirler\u2026<\/em><\/p>\n\n\n\n<p>&nbsp;&nbsp; Azure Worker Role\u2019\u00fcm\u00fcz\u00fc haz\u0131rlay\u0131p test ettikten sonra s\u0131ra geldi bunu deploy etmeye. E\u011fer \u00e7oktan bir Bulut Hizmeti (<em>Cloud Service<\/em>) olu\u015fturmad\u0131ysan\u0131z ilk ad\u0131m <a href=\"http:\/\/manage.windowsazure.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">y\u00f6netim portaline<\/a> ge\u00e7ip bir tane olu\u015fturmak olmal\u0131. <strong>New<\/strong> \u2013&gt; <strong>Cloud Service<\/strong> \u2013&gt; <strong>Quick Create<\/strong> ad\u0131mlar\u0131 ard\u0131ndan yeni bir bulut hizmeti olu\u015fturma ekran\u0131 bizi kar\u015f\u0131layacakt\u0131r;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/yeni-cloud-service.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/yeni-cloud-service_thumb.png\" alt=\"Yeni bir Bulut Hizmeti (Cloud Service) olu\u015fturma ekran\u0131\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; H\u0131zl\u0131ca bir hizmet adresi ve hizmetin sunulaca\u011f\u0131 b\u00f6lgeyi se\u00e7tikten sonra <strong>Create Cloud Service<\/strong> se\u00e7ene\u011fi yard\u0131m\u0131yla bulut hizmetimizi olu\u015fturabiliriz.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/cloud-service-olusturuldu.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/cloud-service-olusturuldu_thumb.png\" alt=\"Bulut Hizmeti (Cloud Service) olu\u015ftu\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u015eimdi tekrar Visual Studio\u2019ya, projemize geri d\u00f6nerek Solution Explorer\u2019dan Enterprisecoding.AzureOWIN\u2019i se\u00e7erek sa\u011f t\u0131klama men\u00fcs\u00fcnden <strong>Publish<\/strong> se\u00e7ene\u011fini se\u00e7iyoruz. Bu se\u00e7enek kar\u015f\u0131m\u0131za <strong>Windows Azure Publish<\/strong> diyalo\u011funu getirecektir;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/windows-azure-publish.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/windows-azure-publish_thumb.png\" alt=\"&quot;Windows Azure Publish&quot; diyalo\u011fu\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Daha \u00f6nceden bir yay\u0131nlama (<em>publish<\/em>) i\u015flemi yapt\u0131ysan\u0131z <em>subscription <\/em>b\u00f6l\u00fcm\u00fc dolu gelecektir. \u0130lk defa yap\u0131yorsan\u0131z merak etmeyin <strong>Sign in to download credentials<\/strong> linkine t\u0131klay\u0131p yap\u0131land\u0131rma dosyas\u0131n\u0131 indirebilir ve <strong>Import <\/strong>butonu yard\u0131m\u0131yla da bu yap\u0131land\u0131rmay\u0131 alabilirsiniz. Sonraki ad\u0131m <strong>Settings<\/strong> diyalo\u011fu;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/windows-azure-publish-settings.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/windows-azure-publish-settings_thumb.png\" alt=\"&quot;Windows Azure Publish&quot; diyalo\u011fu Ayarlar segmesi\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Son olarak \u00f6zet ekran\u0131 bizi bekliyor\u2026<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/windows-azure-publish-summary.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/windows-azure-publish-summary_thumb.png\" alt=\"&quot;Windows Azure Publish&quot; diyalo\u011fu \u00d6zet segmesi\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; \u00d6zet ekran\u0131nda yer alan <strong>Publish<\/strong> butonu yay\u0131nlama s\u00fcrecini ba\u015flatacakt\u0131r. S\u00fcrecin devam\u0131n\u0131 <strong>Windows Azure Activity Log<\/strong> penceresinden izleyebilirsiniz;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/windows-azure-publish-finished.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/windows-azure-publish-finished_thumb.png\" alt=\"Visual Studio i\u00e7erisinde &quot;Windows Azure Activity Log&quot; penceresi \u00fczerinden publish s\u00fcrecini takip edebilirsiniz\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Ba\u015far\u0131l\u0131 bir yay\u0131nlama sonras\u0131nda art\u0131k bir web browser \u00fczerinden yay\u0131nlad\u0131\u011f\u0131m\u0131z adresi a\u00e7arak sonucu g\u00f6rebiliriz;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/owintest-cloudapp-bos.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/owintest-cloudapp-bos_thumb.png\" alt=\"Az \u00f6nce yay\u0131nlad\u0131\u011f\u0131m\u0131z uygulamam\u0131z\u0131 http:\/\/owintest.cloudapp.net adresinde g\u00f6rebiliriz\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/owintest-cloudapp.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/owintest-cloudapp_thumb.png\" alt=\"Bulut hizmetinde bulunan uygulamam\u0131z\u0131n ASP.Net Web API \u00e7a\u011fr\u0131lar\u0131 yapt\u0131\u011f\u0131n\u0131 da g\u00f6rebilirsiniz\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; A\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde yap\u0131lan ajax \u00e7a\u011fr\u0131s\u0131n\u0131 da g\u00f6rebilmeniz m\u00fcmk\u00fcn;<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; OWIN makale serisinde sizlere OWIN hakk\u0131ndaki detaylar\u0131 vermeye \u00e7al\u0131\u015f\u0131rken, Katana projesi yard\u0131m\u0131yla da elimden geldi\u011fince farkl\u0131 \u00f6rnekler payla\u015fmay\u0131 hedefledim. Daha \u00f6nce Katana \u00fczerinde, IIS \u00fczerinde, Konsol ve Windows Forms uygulamalar\u0131m\u0131zda Katana yard\u0131m\u0131yla sundu\u011fumuz OWIN katmanlar\u0131 ve web uygulamalar\u0131m\u0131z\u0131 bu makalemde bulutta sunmay\u0131 planl\u0131yorum. Hedefimiz Windows Azure \u00fczerinde OWIN katmanlar\u0131m\u0131z\u0131 ve uygulamalar\u0131m\u0131z\u0131 sunmak\u2026 &nbsp;&nbsp; Windows&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/windows-azure-uzerinde-owin\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":33630,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77,28],"tags":[316,317,327,333],"class_list":["post-33629","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","category-turkce","tag-katana","tag-owin","tag-web-api","tag-windows-azure"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Windows Azure \u00dczerinde OWIN - Fatih Boy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/windows-azure-uzerinde-owin\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Windows Azure \u00dczerinde OWIN - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; OWIN makale serisinde sizlere OWIN hakk\u0131ndaki detaylar\u0131 vermeye \u00e7al\u0131\u015f\u0131rken, Katana projesi yard\u0131m\u0131yla da elimden geldi\u011fince farkl\u0131 \u00f6rnekler payla\u015fmay\u0131 hedefledim. Daha \u00f6nce Katana \u00fczerinde, IIS \u00fczerinde, Konsol ve Windows Forms uygulamalar\u0131m\u0131zda Katana yard\u0131m\u0131yla sundu\u011fumuz OWIN katmanlar\u0131 ve web uygulamalar\u0131m\u0131z\u0131 bu makalemde bulutta sunmay\u0131 planl\u0131yorum. Hedefimiz Windows Azure \u00fczerinde OWIN katmanlar\u0131m\u0131z\u0131 ve uygulamalar\u0131m\u0131z\u0131 sunmak\u2026 &nbsp;&nbsp; Windows...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/windows-azure-uzerinde-owin\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2013-07-08T06:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-19T12:29:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/algorithms.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"1012\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"Windows Azure \u00dczerinde OWIN\",\"datePublished\":\"2013-07-08T06:30:00+00:00\",\"dateModified\":\"2021-06-19T12:29:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/\"},\"wordCount\":1028,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/algorithms.jpg\",\"keywords\":[\"Katana\",\"Owin\",\"Web API\",\"Windows Azure\"],\"articleSection\":[\"C#\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/\",\"url\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/\",\"name\":\"Windows Azure \u00dczerinde OWIN - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/algorithms.jpg\",\"datePublished\":\"2013-07-08T06:30:00+00:00\",\"dateModified\":\"2021-06-19T12:29:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/algorithms.jpg\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/algorithms.jpg\",\"width\":1800,\"height\":1012},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Windows Azure \u00dczerinde OWIN\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Windows Azure \u00dczerinde OWIN - Fatih Boy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihboy.com\/en\/windows-azure-uzerinde-owin\/","og_locale":"en_US","og_type":"article","og_title":"Windows Azure \u00dczerinde OWIN - Fatih Boy","og_description":"&nbsp;&nbsp; OWIN makale serisinde sizlere OWIN hakk\u0131ndaki detaylar\u0131 vermeye \u00e7al\u0131\u015f\u0131rken, Katana projesi yard\u0131m\u0131yla da elimden geldi\u011fince farkl\u0131 \u00f6rnekler payla\u015fmay\u0131 hedefledim. Daha \u00f6nce Katana \u00fczerinde, IIS \u00fczerinde, Konsol ve Windows Forms uygulamalar\u0131m\u0131zda Katana yard\u0131m\u0131yla sundu\u011fumuz OWIN katmanlar\u0131 ve web uygulamalar\u0131m\u0131z\u0131 bu makalemde bulutta sunmay\u0131 planl\u0131yorum. Hedefimiz Windows Azure \u00fczerinde OWIN katmanlar\u0131m\u0131z\u0131 ve uygulamalar\u0131m\u0131z\u0131 sunmak\u2026 &nbsp;&nbsp; Windows...Read More","og_url":"https:\/\/fatihboy.com\/en\/windows-azure-uzerinde-owin\/","og_site_name":"Fatih Boy","article_published_time":"2013-07-08T06:30:00+00:00","article_modified_time":"2021-06-19T12:29:40+00:00","og_image":[{"width":1800,"height":1012,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/algorithms.jpg","type":"image\/jpeg"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"Windows Azure \u00dczerinde OWIN","datePublished":"2013-07-08T06:30:00+00:00","dateModified":"2021-06-19T12:29:40+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/"},"wordCount":1028,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/algorithms.jpg","keywords":["Katana","Owin","Web API","Windows Azure"],"articleSection":["C#","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/","url":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/","name":"Windows Azure \u00dczerinde OWIN - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/algorithms.jpg","datePublished":"2013-07-08T06:30:00+00:00","dateModified":"2021-06-19T12:29:40+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/algorithms.jpg","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/algorithms.jpg","width":1800,"height":1012},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/windows-azure-uzerinde-owin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"Windows Azure \u00dczerinde OWIN"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33629","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=33629"}],"version-history":[{"count":1,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33629\/revisions"}],"predecessor-version":[{"id":33631,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33629\/revisions\/33631"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/33630"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=33629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=33629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=33629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}