Po ostatnim poście powinno być jasne dlaczego i kiedy warto używać CORS. Przedstawiony przykład pokazywał dwa kluczowe nagłówki: origin oraz Access-Control-Allow-Origin. W praktyce jednak, może zdarzyć się, że przeglądarka wyśle dodatkowy pakiet, tzw. “prefight”. Przeglądarki omijają ten etap, gdy następujące warunki sa spełnione:Zapytanie jest typu GET, HEAD lub POSTW nagłówku nie ma innych zapytań niż Accept, Accept-Language, Content-Language lub Content-TypeContent-Type ma wyłącznie wartości takie ja...
Programowanie rozproszone 3389 dni, 2 godziny, 59 minut temu 164 źrodło rozwiń
W ostatnim wpisie wspomniałem, że Web.Config został usunięty i zastąpiony project.json. Pokazałem, jak dodać referencje czy skonfigurować wersję framework’a. Web.Config jednak zawierał jeszcze jedną ważną sekcję – AppSettings. ASP.NET 5 wspiera różne typy plików konfiguracyjnych – JSON, INI oraz XML. Możemy wszystkie je dodać jednocześnie do solucji i nie spowoduje to konfliktów. Nie jesteśmy ograniczeni tylko do jednego typu czy pojedynczego pliku konfiguracyjnego. Dla testów, dodajmy 3 pliki, każdy w...
Szczególnie w przypadku WebAPI, routing może być dość skomplikowany. W Nancy bardzo łatwo przetestować mapowanie między URL a zaimplementowaną logiką. W WebAPI moim zdaniem jest to dużo mniej wygodnie, ale wciąż powinniśmy zadbać o to, aby mieć zautomatyzowane testy dla routing’u. Załóżmy, że mamy kontroler z niestandardowym routingiem...
W ASP.NET MVC 6.0 (ASP.NET 5.0) usunięto metodę Html.Action. Służyła ona głównie do generowania widoków częściowych. Na przykład, jeśli jakąś funkcjonalność mieliśmy na każdej stronie, wtedy warto było stworzyć child-action i renderować osobno każdą część. Tworzyliśmy wtedy osobny widok i akcję w kontrolerze. Główny widok wywoływał daną akcję (child-action) na kontrolerze i renderował wskazaną część. Więcej o ChildAction można poczytać tutaj. Dlaczego zatem Html.Action został usunięty?
Kilka wpisów wcześniej zacząłem tematykę micro-serwisów oraz wzorca bramki. Jednym z wyzwań podczas rozłupywania monolitu jest zbyt wysoka liczba zapytań do innych serwisów, co powoduje utratę wydajności. Jeśli w monolicie była klasa np. CustomersRepository to teraz będzie to kompletnie nowa usługa. Wysłanie wiadomości do takiej usługo odbywa się przez jakiś protokół – w przypadku REST zwykle jest to HTTP. W monolicie nie było ważne to, że wywołaliśmy np. GetCustomerById(1), potem GetCustomerById(2) i...
Architektura 3501 dni, 2 godziny, 57 minut temu 165 źrodło rozwiń
ASP. NET.NET, asp, datagrid, web formsprzemek Niedawno miałem zadanie napisania szybko aplikacji w ASP .NET Web Forms, w której miała być zaimplementowana funkcjonalność edycji wielu wierszy na raz w kontrolce DataGrid. Niestety standardowe podejście do tematu powoduje, że natrafiamy na problem. Problem polega na tym, że standardowo można edytować tylko jeden wiersz w kontrolce DataGrid. Poniżej przykład standardowego kodu, który umożliwia wyświetlenie danych oraz ich edycje: Poniżej to c...
Sztuka programowania 3578 dni, 19 godzin, 18 minut temu 131 źrodło rozwiń
Web Deploy umożliwia m. in. szybkie – z poziomu Visual Studio – publikowanie aplikacji na serwerze internetowym (IIS). Jest bardzo wygodnym, w miarę bezpiecznym i szalenie przydatnym narzędziem.
Leave a reply W ASP.Net z powodu bez stanowej natury aplikacji sieciowych w celu zapewnienia utrzymania sesji dostępny jest obiekt sesji. Zapis i odczyt z niego jest prosty wystarczy odwołać się do niego jak do słownika:this.Session["key"] = value; value2 = this.Session["key"]; Dziś nie chciał bym jednak pisać o tym jak używać sesji, lecz jak ją skonfigurować by zapewnić jej wydajną prace. Domyślnie działa ona w trybie In-Process. Przechowywana jest w pamięci procesu roboczego na web serwerze. Tryb...
ASP.NET jest wiodącą technologią, jeżeli idzie o rozwiązania webowe w środowisku .NET. I mimo, że pojęcie to samo w sobie nie jest jednolite (w ramach ASP występuje wiele oddzielnych technologii), to jednak niewiele słyszy się o alternatywach. A jest ich całkiem sporo...
In June 3 – 6, there was Tech Ed North America conference in New Orleans. The videos are available on channel9. I have watched a few very good sessions, and I can recommend you especially 5 of them.
Binduj ValueMember i DisplayMember dla ComboBoxa (DropDownList) używając refleksji zamiast błędogennych stringów.
Sztuka programowania 4358 dni, 13 godzin, 47 minut temu 97 źrodło rozwiń
Chce z poziomu kodu czytać konfigurację z pliku app.config (projekty desktopowe) lub Web.config (projekty webowe). Na przykład kolekcję zaufanych applikacji, które mogą korzystać z naszego serwisu. Do tego trzeba stworzyć 3 klasy dziedziczące po ConfigurationSection, ConfigurationElementCollection oraz ConfigurationElement.
VSpniff is a simple tool to find missing references to files in the VS project. You could avoid excluded files problem after bad merge or something else.
CAPTCHA to akronim od „Completely Automated Public Turing Test to Tell Computers and Humans Apart” – czyli w skrócie jest to obrazek, którego treść trzeba wpisać w formularzu, aby przejść dalej. W swoim projekcie skorzystałem z dobrodziejstw Google czyli ReCaptcha (http://www.google.com/recaptcha).
Aby przyspieszyć walidacje xml za pomocą DTD można użyć klasy XmlPreloadedResolver. Umożliwia ona zaczytanie przed walidacją linków jakie pojawiają się w dokumecie xml oraz linków do tych dokumentów, które znajdują się u nas lokalnie. Dzięki temu podczas walidacji wszelkie odnośniki do dokumentów zewnetrznych zistaną rozwiązane na te znajujące się lokalnie, a przez to walidacja przebiegnie szybciej, gdyż często serwery W3C są przeci...
Tytuł zajeżdża nieco komerchą, ale jest to ogólnie dość użyteczny wpis dla osób, które poszukują wydajnego, użytecznego i mocno funkcjonalnego edytora tekstu dedykowanego dla programistów. Postanowiłem zebrać w jednym miejscu moje doświadczenia z poniżej prezentowaną alternatywą dla takich programów jak Notepad++, Notepad2 a nawet Visual Studio oraz przedstawić jego możliwości. Wpis powstał na bazie kilkumiesięcznego użytkowania programu i idealnie się sprawdza jako stand-alone editor oraz jako dodatek d...
autor: Nie tak dawno zrecenzowałem właściwie jedyny sensowny kosztowo polski hosting współdzielony na Webio. Obiecałem, że sprawdzę jak to się robi w America. Zdecydowałem się na molocha – wg Wikipedii GoDaddy (zarządzany przez Parsonsa – od zera do milionera) jest największym akredytowanym przez ICANN rejestratorem domen na świecie. Na wstępie pierwszy minus - GoDaddy nie udostępnia okresu próbnego, jeśli chcesz go sprawdzić sugeruję wybrać opcję 1 miesięczną za 8 dolarów. Ja akurat skorzystałem z kodu ...
Przez długi czas nic nie pisałem ze względu na pracę, teraz ponownie postaram się ożywić bloga i wrzucić parę wartościowych postów. Niedawno odkryłem, że ASP.NET Development Server (“Cassini”) ma poważne ograniczenie - nie obsługuje SSL. Nie obsługuje także URL Rewriting Rules, Custom Security Settings i innych “bogatszych” cech oferowany w IIS 7. Z jego plusów można wymienić:“lekkość”, bezpieczeństwo - tylko żądania lokalnie (intranet odpada), nie potrzebuje konta administratora, nie potrzeba go instalo...
Czasami podczas wykonywania kodu może się zdarzyć, że nasz kod się wysypie z tym wyjątkiem. Problem ten występuje kiedy próbujemy się odwołać do atrybutów klas LINQ2SQL po usunięciu z pamięci powiązanego z nimi DataContextu, czyli defakto oderwania obiektów od bazy danych. Podstawową przyczyną tego problemu jest niejawna optymalizacja linq2sql zwana lazy loading. Mechanizm ten zakłada że nie ładowane są wszystkie atrybuty i kolejcjie z bazy a jedynie to co jest potrzebne, na podstawie wyrażeń lambda oraz...
W poprzedniej części spowodowaliśmy by generowały się atrybuty walidacyjne dla elementów dynamicznie generowanych. Jednakże mimo ich poprawnego dodawania do elementów, walidacja po stronie klienta nie działała dla dynamicznie dodanych elementów – przy tworzeniu byli to autorzy książki, zaś przy edycji nowi jeszcze nie dodani autorzy. Rozwiązanie byłoby dość banalne, gdyby mi choć raz zadziałało, tak jak wspominał Procent u siebie na blogu, powinno wystarczyć wykonanie następującej linijki: