‫۵ سال و ۱ ماه قبل، دوشنبه ۲۱ مرداد ۱۳۹۸، ساعت ۱۹:۵۱
مقدار identityDbInitializer در کد زیر null هست و برنامه با خطای 500.30 متوقف می‌شود. حدس می‌زنید اشکال از کجاست؟
        public static void InitializeDb(this IServiceProvider serviceProvider)
        {
            var scopeFactory = serviceProvider.GetRequiredService<IServiceScopeFactory>();
            using (var scope = scopeFactory.CreateScope())
            {
                var identityDbInitializer = scope.ServiceProvider.GetService<IIdentityDbInitializer>();
                identityDbInitializer.Initialize();
                identityDbInitializer.SeedData();
            }
        }

‫۷ سال و ۱ ماه قبل، شنبه ۱۴ مرداد ۱۳۹۶، ساعت ۱۹:۲۷
این سایت notificatio.me   سایت معتبری نیست. در ضمن، هنگامیکه به عنوان توسعه دهنده در تلگرام نام نویسی می‌کنید، تلگرام به شما اجازه نمی‌دهد که api_id و api_hash خود را در اختیار اشخاص ثالث قرار دهید. حال اینکه شما باید برای استفاده از این سایت، این اطلاعات را در اختیار او قرار دهید.
همانطور که سایر دوستان هم گفتند، پشتیبانی خیلی ضعیفی هم داره و تضمینی هم برای ارسال همه‌ی پیام‌ها نیست.
‫۷ سال و ۵ ماه قبل، سه‌شنبه ۲۲ فروردین ۱۳۹۶، ساعت ۲۰:۵۸
ضمن تشکر، حالت زیر را ملاحظه بفرمایید:
public BlogViewModel GetBlogByIdForPublicView(int blogId)
{
    var result = _blogs
        .ProjectTo<BlogViewModel>()
        .First(a => a.Id == blogId);
    result.Item1 = ... get some item from db;
    result.Item2 = ... get another item from db; 
    return result;
}
در این شرایط چگونه می‌توان از نوع بازگشتی Task استفاده کرد؟
‫۷ سال و ۵ ماه قبل، سه‌شنبه ۲۲ فروردین ۱۳۹۶، ساعت ۰۷:۱۱
من با خطای A second operation started... روبرو می‌شوم. وقتی لاگهای ثبت شده توسط Elmah را بررسی کردم، متوجه این جزییات شدم. 
   ...
   at System.Data.Entity.Infrastructure.IDbAsyncEnumerableExtensions.<FirstOrDefaultAsync>d__25`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   ...
   at MyApplication.ServiceLayer.EfServices.Content.BlogService.<GetBlogByIdForPublicViewAsync>d__24.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   ...
   at MyApplication.Controllers.BlogController.<Details>d__87.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
اکشن Details و متد GetBlogByIdForPublicViewAsync را بدین نحو تعریف کرده‌ام.  
public async Task<BlogViewModel> GetBlogByIdForPublicViewAsync(int blogId)
{
    var result = await _blogs
        .ProjectTo<BlogViewModel>()
        .FirstOrDefaultAsync(a => a.Id == blogId);
    return result;
}

public virtual async Task<ActionResult> Details(int id)
{
    var blog = await _blogService.GetBlogByIdForPublicViewAsync(id);
    return View("Details", blog);
}
با وجود استفاده از واژه‌ی await برای تمام رویه‌های غیرهمزمان، اما بازهم با همان خطا روبرو می‌شوم.
ممکن است لطفا بفرمایید کجا را اشتباه انجام داده‌ام؟  
‫۷ سال و ۵ ماه قبل، دوشنبه ۲۱ فروردین ۱۳۹۶، ساعت ۰۴:۲۲
ضمن تشکر بابت نشر این مطلب، من با قسمت route به مشکل برخورد کردم. یعنی، اگر از هر نوع پسوندی برای آدرس استفاده کنم، با خطای ۴۰۴ مواجه می‌شوم (البته به طرز عجیبی بجز aspx). برای تنظیمات مسیریابی به شکل زیر عمل می‌کنم:
routes.MapRoute(
    "SiteMap",
    "sitemap.xml",
    new { controller = "SiteMap", action = "Index", name = UrlParameter.Optional }
);
که البته با همان خطای ۴۰۴ روبرو می‌شود. در نوشتاری در خصوص مقدار RouteExistingFiles توضیح داده شده‌است. پس وضعیت تنظیم سیستم مسیریابی را به شکل زیر اصلاح کردم:
  routes.RouteExistingFiles = true; 
routes.MapRoute(
    "SiteMap",
    "sitemap.xml",
    new { controller = "SiteMap", action = "Index", name = UrlParameter.Optional }
);
نکته اینکه این کار، طبق توصیه، پیش از مسیریابی پیش‌فرض انجام شده است. باز هم خطای ۴۰۴! به آموزش دیگری مراجعه می‌کنم. شگفتا که در این حالت هم باز خطای ۴۰۴! بدون انجام هر تغییری، پسوند xml را با aspx جایگزین می‌کنم. نتیجه:

با پسوند html هم آزمایش می‌کنم. متاسفانه خطای ۴۰۴!

هنگامیکه کلا از هیچ پسوندی استفاده نمی‌کنم، نتایج sitemap با فرمت xml مشاهده می‌شود (مطابق انتظار). حقیقتا نمی‌دانم که چه چیزی را از قلم انداخته یا به اشتباه انجام داده‌ام. صرفنظر از اینکه صفحه‌ی sitemap فاقد پسوند باشد یا چه آدرسی داشته باشد ، اینکه هنگام استفاده از پسوند xml به نتیجه نمی‌رسم، آزار دهنده است. درصورت امکان، راهنمایی بفرمایید.

/*----------------------*/

متدی که برای اسکن کردن تمام controllerها تدارک دیده شده است، در صورت استفاده از T4MVC ، تمام controllerهای تهیه شده توسط T4MVC را هم به عنوان controller منعکس می‌کند. به عنوان نمونه، هر دو کنترلر زیر در خروجی xml وجود دارند:

<url>
<loc>http://localhost:3989/T4MVC_Blog/Index</loc>
<lastmod>2017-04-09T19:07:41.5751733Z</lastmod>
<changefreq>Always</changefreq>
<priority>0.5</priority>
</url>

<url>
<loc>http://localhost:3989/Blog/Index</loc>
<lastmod>2017-04-09T19:07:41.5751733Z</lastmod>
<changefreq>Always</changefreq>
<priority>0.5</priority>
</url>

آیا امکان تغییر رفتار متد ScanAllControllers وجود دارد؟

‫۷ سال و ۶ ماه قبل، دوشنبه ۱۴ فروردین ۱۳۹۶، ساعت ۲۲:۳۳
به عنوان یک پیشنهاد، می‌توان پارامتری دیگری هم اضافه کرد تا در صورت لزوم، کاربر به آدرس دیگری منتقل شود.
public string RedirectUrl {get; set; }

...
if(cache[hasValue] != null) {
      filterContext.Controller.ViewData.ModelState.AddModelError("...", ...);
      filterContext.HttpContext.Response.Redirect(RedirectUrl);
}

‫۷ سال و ۶ ماه قبل، دوشنبه ۳۰ اسفند ۱۳۹۵، ساعت ۰۱:۱۹
ضمن تشکر از راهنمایی شما،  contentType را حذف و به روش زیر عمل کردم. ظاهرا کار می‌کند. مطمئن نیستم که روش درستی باشد یا نه. اما به هر شکل طبق انتظار رفتار می‌کند. نظر شما چیست؟
    function test() {
            $.ajax({
                url: "/CONTROLLER/ACTIONMETHOD",
                type: "GET"
            })
            .done(function (partialViewResult) {
                $("#cats").html(partialViewResult);
            });
    }

‫۷ سال و ۶ ماه قبل، یکشنبه ۲۹ اسفند ۱۳۹۵، ساعت ۲۰:۴۶
بعد از اینکه صفحه‌ی مودال بسته شد، چطور می‌شود بر اساس نتیجه، موفق یا ناموفق بودن، اطلاعات صفحه‌ی اصلی را به‌روز کرد؟ من از روش زیر استفاده کردم. اما PartialView به‌روز نمی‌شود.
    function LoadCt() {
        $('#myModal').modal('hide');
        $.ajax({
            type: "POST",
            url: "/CONTROLLER/ACTIONMETHOD",
            data: JSON.stringify(),
            contentType: "application/json; charset=utf-8",
            dataType: "html",
            complete: function (xhr, status) {
                var data = xhr.responseText;
                $('cats').html(data);
            }
        });
    }
و در CONTROLLER:
        public ActionResult ACTIONMETHOD()
        {
            var model = stuff from _db;
            return PartialView("_Get", model);
        }