• 1400/03/07

مشکل در دسترسی به url.action() :

سلام و خسته نباشید.

من می خوام که برای token فعال سازی باایمیل یک method بنویسم تا زمانی که پس از ثبت نام موفق از آن استفاده کنم.

 

نکته: همه ی کدهای مربوط به identity من در یک class library  نوشته شده و فقط در لایه ی web از آن استفاده می کنم.

در کلاس مربوط به tokenGenerator فضای نام 

using Microsoft.AspNetCore.Mvc;

را اضافه کردم، اما هنوز به url.action  و request دسترسی ندارم و پروژه با خطا روبه رو می شه.

 

خطا در کد زیر است، نمی دونم چطور اصلاح کنم.

var emailMessage =

               Url.Action("ConfirmEmail", "Account", new { username = identityUser.UserName, token = emailConfirmationToken }, Request.Scheme);

 

 

 

 

موفق باشید.

 

  • 1400/03/07
  • ساعت 12:57

سلام عزیز.

به خاطر مسائل مربوط به HttpContext هستش. لینک زیر رو بررسی کنید :

https://stackoverflow.com/questions/20869222/how-to-use-url-action-in-a-class-file

راه های دیگه ای هم هستش البته.


  • 1400/03/07
  • ساعت 16:31

سلام استاد. خسته نباشید.

هر کاری کردم مشکلم حل نشد.

یک سؤال دیگه اینه که نوع پروژه من RazorPage است و در لایه ی Application.core از interface  و  Service استفاده می کنم و در برنامه controller به نام Account  ندارم.

دو روز هست که همین token generator تمام وقتم رو گرفته. هر چه زیاد تلاش می کنم برای حلش بیشتر در باتلاقش فرو می رم.

ممنون می شم اگه راهنمایی کنید.

 

موفق باشید.

 


  • 1400/03/07
  • ساعت 17:31

برای Razor pages باید از Url.Page استفاده بکنید.

میتونین از LinkGenerator هم استفاده بکنید، مثال زیر :

var uri = _linkGenerator.GetUriByAction(
            		  _httpContextAccessor.HttpContext,
                    "test", "home", new {id = request.Id );

نمونه از LinkGenerator و HttpContextAccessor رو از کانستراکتور دریافت کنید و طبق مثال بالا استفاده کنید، البته برای Razor باید از متود های دیگه اش مثل GetUriByPage استفاده کنید.


logo-samandehi