{"id":1189,"date":"2019-05-06T21:41:53","date_gmt":"2019-05-06T20:41:53","guid":{"rendered":"http:\/\/piatkosia.k4be.pl\/wordpress\/?p=1189"},"modified":"2019-05-06T21:43:33","modified_gmt":"2019-05-06T20:43:33","slug":"invalidoperationexception-unable-to-resolve-service-for-type-inazwa-while-attempting-to-activate-mojkontroler","status":"publish","type":"post","link":"https:\/\/piatkosia.k4be.pl\/wordpress\/2019\/05\/06\/invalidoperationexception-unable-to-resolve-service-for-type-inazwa-while-attempting-to-activate-mojkontroler\/","title":{"rendered":"InvalidOperationException: Unable to resolve service for type [INazwa] while attempting to activate [MojKontroler]"},"content":{"rendered":"<p style=\"text-align: justify;\">Mam tak\u0105 manier\u0119, \u017ce jak ogarn\u0119\u0142am jak si\u0119 co\u015b robi w jednym miejscu, czasami si\u0119 rzucam na pa\u0142\u0119 i zbyt analogicznie pr\u00f3buj\u0119 to zrobi\u0107 w drugim. <br>Bawi\u0142am si\u0119 w autofac pod desktopem i fajnie by\u0142o, wi\u0119c pr\u00f3buj\u0105c uczy\u0107 si\u0119 pisa\u0107 webapi (pod k\u0105tem pisania pracy dyplomowej) postanowi\u0142am \u017ce sobie te\u017c pou\u017cywam, bo zacz\u0119\u0142o mi si\u0119 podoba\u0107, \u017ce jak chc\u0119 u\u017cy\u0107 funkcji z innej klasy, to zamiast kombinowa\u0107 z tworzeniem klas z jej zale\u017cno\u015bciami, po prostu wrzucam interfejs w konstruktor i gotowe, mam ca\u0142kiem \u015bwie\u017cy obiekt na moje potrzeby.<\/p>\n<p>Tak\u017ce mia\u0142am sobie klas\u0119 z jedn\u0105 metod\u0105<\/p>\n\n\n<!--more-->\n\n\n\n<pre class=\"wp-block-code\"><code> public IContainer Bootstrap()\n        {\n            var builder = new ContainerBuilder();\n          \/\/tu r\u00f3\u017cne builder.Registry\n            return builder.Build();\n        }<\/code><\/pre>\n\n\n<p style=\"text-align: justify;\">po czym w w App.xaml.cs mia\u0142am private Bootstrapper bootstrapper = new Bootstrapper();<br>i w OnStartup co\u015b takiego:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>IContainer container = bootstrapper.Bootstrap();\n            var mainViewModel = container.Resolve&lt;MainViewModel>();\n            MainWindow = new MainWindow(mainViewModel);\n            MainWindow.Show();<\/code><\/pre>\n\n\n<p style=\"text-align: justify;\">potem sobie hula\u0142am a\u017c mi\u0142o, do czasu a\u017c postanowi\u0142am przenie\u015b\u0107 to do weba. A dok\u0142adnie do mojego selfhostowanego api (tak, tego co na kompie ze \u015bp matryc\u0105 nie chcia\u0142o dzia\u0142a\u0107 z poziomu VS dunno why, jak si\u0119 dowiem to na pewno napisz\u0119, niestety serwis lenovo si\u0119 nie \u015bpieszy i od wielkiego pi\u0105tku nie zd\u0105\u017cyli nawet &#8211; je\u015bli wierzy\u0107 panu co odebra\u0142 ode mnie telefon, podda\u0107 go diagnozie), co je odpalam jako aplikacj\u0119 konsolow\u0105. Naturalne wi\u0119c si\u0119 wydawa\u0142o, by wstrzeli\u0107 \u00f3w kod do maina.<\/p>\n<p style=\"text-align: justify;\">I b\u0142\u0105d. Swoj\u0105 drog\u0105 fajnie wygl\u0105daj\u0105 exceptiony w api przez przegl\u0105dark\u0119 &#8211; podoba mi si\u0119;) Ma\u0142o co potrafi si\u0119 tak pi\u0119knie wyjeba\u0107.<\/p>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"519\" src=\"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/05\/wyjebka-1024x519.png\" alt=\"\" class=\"wp-image-1190\" srcset=\"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/05\/wyjebka-1024x519.png 1024w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/05\/wyjebka-300x152.png 300w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/05\/wyjebka-768x389.png 768w, https:\/\/piatkosia.k4be.pl\/wordpress\/wp-content\/uploads\/2019\/05\/wyjebka.png 1157w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Ca\u0142kiem \u0142adnie wygl\u0105daj\u0105cy exception,  a\u017c sobie screena zachowa\u0142am<br><br><\/figcaption><\/figure>\n\n\n<p style=\"text-align: justify;\">Ale wracajmy do tego, \u017ce ma dzia\u0142a\u0107, no wi\u0119c, jako \u017ce to typowy b\u0142\u0105d pocz\u0105tkuj\u0105cego, przeczesa\u0142am pewien znany &#8222;wykop z rozwi\u0105zaniami dla programist\u00f3w&#8221; z przepe\u0142nieniem stosu w nazwie.<\/p>\n<p style=\"text-align: justify;\">Co si\u0119 okaza\u0142o, o\u017cenienie autofaca z asp.net core web api jest mo\u017cliwe i wymaga drobnych modyfikacji i doinstalowania jednej nugetpaczki wi\u0119cej. A imi\u0119 jej Autofac.Extensions.DependencyInjection.<\/p>\n<p style=\"text-align: justify;\">Ok, paczka za\u0142adowana, teraz nale\u017cy przej\u015b\u0107 do Maina i wywali\u0107 dodany przez siebie syf, a nast\u0119pnie przej\u015b\u0107 do Startup.cs, doda\u0107 zmienn\u0105<\/p>\n<p>public IContainer ApplicationContainer { get; private set; }<\/p>\n<p style=\"text-align: justify;\">i zmodyfikowa\u0107 funkcj\u0119 ConfigureServices na tak\u0105 (tak, warto\u015b\u0107 zwracana te\u017c ma si\u0119 zmieni\u0107):<\/p>\n\n\n<pre class=\"wp-block-code\"><code>\n public IServiceProvider ConfigureServices(IServiceCollection services)\n        {\n            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);\n            var builder = new ContainerBuilder();\n            \/\/tu da\u0107 te same registery co by si\u0119 normalnie da\u0142o\n            builder.Populate(services);\n            ApplicationContainer = builder.Build();\n            return new AutofacServiceProvider(ApplicationContainer);\n        }<\/code><\/pre>\n\n\n<p style=\"text-align: justify;\">Pozwoli\u0107 pododawa\u0107 usingi (ostro\u017cnie! Ale bez obaw, kt\u00f3re\u015b zadzia\u0142aj\u0105).<\/p>\n<p style=\"text-align: justify;\">I \u015bmiga;)<\/p>\n<p style=\"text-align: justify;\">Robi si\u0119 p\u00f3\u017ano wi\u0119c wrzucam wpis i id\u0119 spa\u0107.<br \/>PS sorki za brzydkie listingi i niedzia\u0142aj\u0105ce tagi i kategorie (niekt\u00f3re), w kt\u00f3rym\u015b momencie to poogarniam. Update wordpressa nie\u017ale go popsu\u0142. Na razie priorytetem jest jednak magisterka, mam nadziej\u0119, \u017ce mi wybaczycie.<\/p>","protected":false},"excerpt":{"rendered":"<p>Jak sprawi\u0107, aby asp net core si\u0119 dogada\u0142o z autofac<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/piatkosia.k4be.pl\/wordpress\/2019\/05\/06\/invalidoperationexception-unable-to-resolve-service-for-type-inazwa-while-attempting-to-activate-mojkontroler\/\">Lecim dalej<span class=\"screen-reader-text\">InvalidOperationException: Unable to resolve service for type [INazwa] while attempting to activate [MojKontroler]<\/span> <i class=\"fas fa-angle-right\"><\/i><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[735,737,739,83,645,180,581,49,247],"tags":[733,690,262,734,619],"class_list":["post-1189","post","type-post","status-publish","format-standard","hentry","category-asp_net_core_web_api","category-aspnetcore","category-autofuc","category-c_sharp","category-gmtl","category-libs","category-programming","category-programowanie","category-visual-studio","tag-asp_net_core_web_api","tag-autofuc","tag-c_sharp","tag-dependency-injection","tag-gmtl","entry"],"_links":{"self":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/comments?post=1189"}],"version-history":[{"count":2,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1189\/revisions"}],"predecessor-version":[{"id":1192,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/posts\/1189\/revisions\/1192"}],"wp:attachment":[{"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/media?parent=1189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/categories?post=1189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piatkosia.k4be.pl\/wordpress\/wp-json\/wp\/v2\/tags?post=1189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}