• Почему ASP.NET MVC приложения потребляют так много памяти?

    @beduin01 если не ошибаюсь, ASP.NET сайты "живут" с момента их публикации (в IIS, например) и до перезагрузки сервера. Сессия в ASP.NET опирается на кеш. Когда от нового пользователя посылается запрос, ему назначется уникальный идентификатор сессии (передающийся в куки ASP.NET_SessionId. По прошествии определенного количества времени (по-умолчанию, кажется, 30 минут, либо как разработчик укажет в файле web.config) сессия "уничтожается". Если снова запрос от того же пользователя, то просто новая сессия. Специалисты ASP.NET - поправьте меня, если я ошибаюсь. Насчет PHP, увы, не могу ничего сказать...
  • Как лучше реализовать ежедневное обновление курсов валют в БД для ASP.NET MVC?

    Valeriy1991
    @Valeriy1991 Автор вопроса
    @avorsa спасибо! Поковыряю Quartz. Возможно, он сможет помочь...
  • Как лучше реализовать ежедневное обновление курсов валют в БД для ASP.NET MVC?

    Valeriy1991
    @Valeriy1991 Автор вопроса
    @avorsa спасибо за Ваш ответ, конечно, но меня не интересуют преобразования валют. Будьте любезны, прочтите, пожалуйста, вопрос внимательнее.
  • Как в ASP.NET MVC уведомить клиента об изменениях на стороне сервера?

    Valeriy1991
    @Valeriy1991 Автор вопроса
    Всем спасибо за ответы. Похоже, SignalR - то, что нужно!
  • Как в ASP.NET MVC уведомить клиента об изменениях на стороне сервера?

    Valeriy1991
    @Valeriy1991 Автор вопроса
    @zBit Можно чуть поподробнее? Как именно лучше организовать? Может, какая-нибудь статья есть (можно и на англ.)
  • Как реализовать роут в ASP.net MVC?

    @rgamretsky Добрый день! Что-то Вы перемудрили с маршрутами )) У Вас получается, по сути, 2 конфликтующих маршрута: №1 и №2.
    В Вашей ситуации достаточно будет 2 маршрутов:
    public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
               
                routes.MapRoute(
                name: "",
                url: "{url}",
                defaults: new { controller = "Home", action = "Index", url = "index" }
                );
    
                //routes.MapRoute(
                //    name: "",
                //    url: "{url}",
                //    defaults: new { controller = "Card", action = "Index", url = (string)null }
                //);
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
            }
        }

    Для проверки в любой View поместите:
    @Html.ActionLink("Главная (normal)", "Index", "Home")
    
    @Html.ActionLink("Главная", "Index", "Home", new { url = "index" }, null)
    
    @Html.ActionLink("Карточка (normal)", "Index", "Card")
    
    @Html.ActionLink("О сайте (normal)", "About", "Home")
    
    @Html.ActionLink("О сайте", "Index", "Home", new { url = "about" }, null)

    По поводу Вашего решения задачи. На мой субъективный взгляд, у Вас вполне адекватное решение. Во всяком, случае, минусов у него я пока что не вижу.
  • Как реализовать роут в ASP.net MVC?

    @rgamretsky приведите ваш файл с роутами (если он, конечно, не очень большой). Насчет того, как бы я реализовал, нужно подумать...
  • Как реализовать роут в ASP.net MVC?

    @rgamretsky Теперь ясно. В принципе, решение интересное... Другое дело, что Вам, по идее, нужен еще маршрут, который бы ставил запрос "site.ru/index" в соответствие с URL "site.ru" (чтобы покрасивее URL выглядел). На всякий случай, если Вы еще такой маршрут не сделали, то он будет выглядеть так:
    routes.MapRoute(
                    name: "",
                    url: "", // <-- пустой URL
                    defaults: new { controller = "Home", action = "Index", parameter = "index" }
                );

    Такой маршрут надо поместить перед всеми остальными маршрутами, например. так:
    public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "",
                    url: "",
                    defaults: new { controller = "Home", action = "Index", parameter = "index" }
                );
    
                routes.MapRoute(
                    name: "",
                    url: "{parameter}",
                    defaults: new { controller = "Home", action = "Index", parameter = (string)null }
                );
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
            }
  • Как реализовать роут в ASP.net MVC?

    @rgamretsky Добрый день!
    Сделал рабочий тестовый проект.
    Вот содержимое RouteConfig.cs:
    public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "",
                    url: "{parameter}",
                    defaults: new { controller = "Home", action = "Index", parameter = (string)null }
                );
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
            }


    При этом метод действия Index следующий:
    public ActionResult Index(string parameter = "index")
            {
                switch (parameter)
                {
                    case "about": return RedirectToAction("About");
                    default:
                        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
                        return View();
                }            
            }


    Сформируйте исходящие URL, например, так:
    @Html.ActionLink("Главная", "Index", "Home")
    
    @Html.ActionLink("О сайте", "Index", "Home", new { parameter = "about" }, null)
    
    @Html.ActionLink("О сайте (normal)", "About", "Home")

    Здесь:
    1) даст адрес localhost:xxxx
    2) даст адрес localhost:xxxx/about
    3) даст адрес localhost:xxxx/Home/About

    С помощью исходящих URL вообще очень быстро можно проверить работоспособность маршрута.

    Вообще, позвольте уточнить, зачем Вам такой способ решения задачи? И какова вообще Ваша задача, которую Вы хотите решить именно таким способом?
  • Как вы реализовываете авторизацию в ASP.net MVC?

    @Alexey_Gagarin добрый день! Спасибо, что разъяснили суть SimpleMembershipProvider. В принципе, удобно конечно, что его можно "привязать" к своей таблице. И да, Вы правы, в таблицах MembershipAPI много полей, в назначение которых я не углублялся. Когда я впервые запустил шаблон MVC 4 Internet Application в VS2012, как Вы и сказали, там уже был SimpleMembershipProvider, но я что-то тогда не стал разбираться с кодом, он мне показался сложноватым + я прочитал вот эту статью: odetocode.com/blogs/scott/archive/2012/09/24/peril... , в которой автор говорит о том, что может возникнуть исключение при определенных ситуациях, если на контроллере навешан атрибут [InitializeSimpleMembership] (правда, автор говорит и о решении такой проблемы). В результате в целях ускорить процесс разработки одного из проектов, я отказался от SimpleMembershipProvider в пользу membershipAPI, т.к. с ним уже имел опыт работы, а это позволило бы ускорить разработку проекта.
    @Alexey_Gagarin был бы Вам признателен за ссылки на материалы, как правильно работать с SimpleMembershipProvider!
  • Asp.net mvc тип данных для денег?

    Добрый день! Я с Вами не согласен в том плане, что "какая там культура на серваке бд - это не важно". Это как раз-таки очень важно. Почему? Поделюсь опытом.
    Есть сайт на ASP.NET WebForms, который впоследствии был выложен на хостинг. В веб-приложении также использовался тип decimal для хранения точных значений (в моем случае это были объемы: тонны, куб.метры). Пока разрабатывал у себя на компе - все было ОК. Как только выложил на хостинг - начались чудеса с точками и запятыми: при вводе в поле "12,55" (в том смысле, что 12 целых 55 сотых) в БД записывалось "12550.00" (тысячи!!!). В приложении, повторюсь, тип decimal, в БД - тоже decimal. Оказалось, причина в разнице культур: на хостинге по-умолчанию бралась английская культура, у которой запятая - разделитель разрядов, а точка - разделитель целой и дробной части. В русской культуре, как правильно сказал lavel, запятая - разделитель целой и дробной части.
    Решилась данная проблема очень просто: в файл web.config нужно лишь добавить 1 строчку:
    <configuration>
        <system.web>
          <globalization culture="ru-RU" uiCulture="ru-RU" />
        </system.web>
    </configuration>