Zobrazují se příspěvky se štítkemASP.NET MVC. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemASP.NET MVC. Zobrazit všechny příspěvky

čtvrtek 13. ledna 2022

Visual Studio nerozpozná nově přidanou třídu

 Po přidání nové třídy do projektu se VS chovalo jako kdyby nová třída vůbec přidaná nebyla.

Řešení:

Aktualizovat verzi knihovny "Microsoft.Net.Compilers" z verze 1.0.0 na alespoň 3.0.0

Zdroj:

https://developercommunity.visualstudio.com/t/cannot-navigate-to-the-symbol-under-the-caret-3/505489

středa 11. listopadu 2020

Ukládání desetinných čísel ASP.NET MVC

 Validace hodnot formuláře pomocí knihovny jquery.validate.js

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}


Vyžaduje pro čekou culture drobnou úpravu v _Layout.cshtml, která nahradí validační funkci pro desetinná čísla


<script type="text/javascript">

        $.validator.methods.number = function (value, element) {

            return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)?(?:,\d+)?$/.test(value);

       }

        $.validator.methods.range = function (value, element, param) {

            value = Number(value.toString().replace(',', '.'));

            return this.optional(element) || (value >= Number(param[0].toString().replace(',', '.')) && value <= Number(param[1].toString().replace(',', '.')));

        }


    </script>

neděle 27. září 2020

Přesmětování HTTP na HTTPS ve WebConfigu

Stačí do WebConfigu doplnit rewrite pravidlo do části  System.Webserver

<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>


 Zdroj:

https://napoveda.czechia.com/clanek/presmerovani-http-na-https/

středa 17. června 2020

Test přihlášení ASP stránky


class Program
    {
        public class SettingModel
        {
            public string Login { get; set; }
            public string Password { get; set; }
            public string Url { get; set; }
            public string Assert { get; set; }
        }

        public static SettingModel ParseCommandLineArguments(string[] args)
        {
            var result = new SettingModel();
            for( int n=0; n < args.Length; n++)
            {
                switch (args[n].ToLower()) 
                {
                    case "-l":
                        result.Login = args[++n];
                        break;

                    case "-p":
                        result.Password = args[++n];
                        break;

                    case "-u":
                        result.Url = args[++n];
                        break;

                    case "-a":
                        result.Assert = args[++n];
                        break;
                }
            }

            return result;
        }

        static void Main(string[] args)
        {
            var model = ParseCommandLineArguments(args);

            Uri baseUri = new Uri(model.Url);
            //HttpClientHandler handler = new HttpClientHandler();
            //handler.CookieContainer = new CookieContainer();
            //HttpClient client = new HttpClient(handler);
            using (HttpClient client = new HttpClient()) 
            { 
                var getRequest = client.GetAsync(baseUri);
                getRequest.Wait();
                HttpResponseMessage response = getRequest.Result;

                //CookieCollection collection = handler.CookieContainer.GetCookies(uri); // Retrieving a Cookie
                var htmlPage = response.Content.ReadAsStringAsync();
                htmlPage.Wait();

                var html = htmlPage.Result;
                var reg = Regex.Match(html, "<input name=\"__RequestVerificationToken\" type=\"hidden\" value=\"(.*)\" />");
                if (reg.Success)
                {
                    var regexGroups = reg.Groups;

                    var formVariables = new List<KeyValuePair<string, string>>();
                    formVariables.Add(new KeyValuePair<string, string>("login", model.Login));
                    formVariables.Add(new KeyValuePair<string, string>("password", model.Password));
                    formVariables.Add(new KeyValuePair<string, string>("__RequestVerificationToken", regexGroups[1].Value));
                    var loginFormData = new FormUrlEncodedContent(formVariables);

                    var postRequest = client.PostAsync(baseUri, loginFormData);
                    postRequest.Wait();
                    var postResult = postRequest.Result;

                    var dashboardHtmlPage = postResult.Content.ReadAsStringAsync();
                    htmlPage.Wait();
                    var htmlToAssert = dashboardHtmlPage.Result;

                    Assert(model.Assert, htmlToAssert);
                }
            }
        }

        private static void Assert(string assertString, string htmlToAssert)
        {
            if (htmlToAssert.Contains(assertString)) // "/KlientskaZona/ProfilSpolecnosti/ProfilSpolecnosti"))
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Success");
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Failed");
            }
        }
    }

čtvrtek 8. března 2018

Globalizace MVC aplikace

Nastavení ve WebConfigu

<system.web>
<globalization uiCulture="en" culture="en-AU" />
</system.web>

Přebije  výchozí nastavení systému. Pokud OS má výchozí jazyk EN pak IIS spouští aplikace jako anglické pokud není uvedeno ve WebConfigu explicitně jinak nebo nedojde k přepnutí během běhu programu.

např. v Global.asax  v metodě Application_BeginRequest
protected void Application_BeginRequest()
        {
           // nastavení jiné Culture
        }

středa 24. května 2017

Co může za chybu v Castle?

Server Error in '/' Application.
Publisher tried to start subscriber NěcoNěco that was not found
Exception Details
Castle.Facilities.EventWiring.EventWiringException: Publisher tried to start subscriber NěcoNěco that was not found

Zkontrolujte jestli máte zaregistrovanou implementaci požadovaného rozhraní.

pátek 21. října 2016

Přehlednější struktura MVC projektu


Global asax
void Application_Start()
{
...
// ViewEngines.Engines.Clear();

            ViewEngines.Engines.Add(new CustomRazorViewEngine());
...
}


CustomRazorViewEngine .cs
public class CustomRazorViewEngine : RazorViewEngine
    {
        public CustomRazorViewEngine()
        {
            ViewLocationFormats = new string[]
            {
            "~/{1}/Views/{0}.cshtml",
            };

            PartialViewLocationFormats = new string[]
            {
            "~/Shared/Views/{0}.cshtml"
            };
        }

    }


Zdroj:
http://www.matthewrenze.com/articles/clean-architecture-in-asp-net-mvc-5/

pátek 11. prosince 2015

Jak shodit Visual Studio 2013

pokud se Vám povede vyrobit nějaký takovýto atribut
public class ExceptionFilterAttribute : ExceptionFilterAttribute
Vznikne Vám takováto chyba
Circular base class dependency involving 
Pokud si jí ale nevšimnete a pokusíte se tento atribut přiřadit nad některou metodu, tak to vaše Visual Studio neustojí a padne na držku ;)

středa 16. září 2015

Ftp vs. WebDeploy

Způsobů jak dostat hotový projekt na produkční server je několi. V tomto blogpostu porovnám jaký je rozdíl mezí FTP a WebDeployem.

FTP
Pro konfiguraci tohoto způsobu potřebujete:

  • Adresu ftp serveru
  • Uživatelské jméno
  • Heslo
  • Cestu k webRoot adresáři
  • URL adresu nasazeného projektu pro otevření prohlížeče po nasazení

Jakmile toto vše zadáte do průvodce Publish profilu, máte ještě možnost nastavit že se všechny soubory mají nejdříve smazat a potom zkopírovat nové verze. To Vám o něco prodlouří dobu nasazení, protože mazání spousty malých souborů je jen o něco rychlejší než jejich nahrání zpšt na server.

WebDeploy 
Pro konfiguraci webDeploye potřebujeme podobné údaje s tím rozdílem, že namísto webroot adresáře potřebujeme znát site name což je název stránky v IIS
Z buildovaný projekt je pak zabalen do ZIP balíčku s manifestem ve kterém je uvedeno jak se má balíček nasadit na IIS. Pomocí služby WebDeploy kterou jenutné na IIS nainstalovat se balíček nakopíruje na server kde se rozbalí do požadovaného adresáře. Což je asi "trilionkrát" rychlejší než používání mazání a kopírování přes FTP.

úterý 8. září 2015

Deploy na IIS 6.1 MVC 5 .NET4.0

Do souboru Web.Config je potřeba přidat:
<modules runAllManagedModulesForAllRequests="true">

Po dvou hodinách googlení a nastavování se to rozjelo

Klíčový řádek je:
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -ir

Pak je ještě potřeba nastavit v MimeType příponu pro *.svg
image/svg+xml


<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" xdt:Transform="SetAttributes"/>
    <staticContent>
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
    </staticContent>
  </system.webServer> 

Zdroj:
http://stackoverflow.com/questions/21623654/issue-deploying-asp-net-mvc-5-to-iis-server