دلیل خطای Login failed for user IIS APPPOOL در IIS
یک پروژه با Asp.net Core 7 دارم که روی لوکال به درستی کار میکنه. ولی وقتی میارم روی سرور IIS پروژه ران میشه ولی در صفحاتی که نیاز به واکشی اطلاعات از دیتابیس هست با خطای زیر روبرو میشم.
SqlException: Login failed for user 'IIS APPPOOL\tooman.ir'.
Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, bool breakConnection, Action<Action> wrapCloseInAction)
لطفا راهنمایی بفرمایید چجوری میتونم این خطا رو رفع کنم ؟
پاسخ هوش مصنوعی
این خطا به این دلیل به وجود می آید که اپلیکیشن شما که به عنوان یک اپلیکیشن در IIS اجرا می شود، به دیتابیس SQL Server وصل نمی شود. علت اصلی این مشکل معمولاً این است که کاربر پیش فرضی که توسط IIS برای اجرای اپلیکیشن استفاده می شود، مجوزهای دسترسی به دیتابیس را ندارد.
برای رفع این مشکل می توانید مراحل زیر را دنبال کنید:
- وارد SQL Server خود شوید و کاربری به نام 'IIS APPPOOL\tooman.ir' یا نام اپلیکیشن خود را اضافه کنید.
- مجوزهای لازم (مثل دسترسی "db_datareader" و "db_datawriter") را به این کاربر برای دیتابیس خود اعطا کنید.
به طور خاص، برای انجام این کار:
USE [YourDatabaseName]
GO
CREATE USER [IIS APPPOOL\tooman.ir] FOR LOGIN [IIS APPPOOL\tooman.ir]
GO
ALTER ROLE [db_datareader] ADD MEMBER [IIS APPPOOL\tooman.ir]
GO
ALTER ROLE [db_datawriter] ADD MEMBER [IIS APPPOOL\tooman.ir]
GO
البته اگر درخواست اتصال را به یک کاربر SQL Server تخصیص داده اید، بهتر است از رشته اتصال استفاده کنید که شامل نام کاربری و رمز عبور SQL Server باشد. این کار به شما این امکان را می دهد که از حساب کاربری خاصی استفاده کنید که مجوزهای لازم برای دسترسی به دیتابیس را دارد.
همچنین، اطمینان حاصل کنید که حساب 'IIS APPPOOL\tooman.ir' به درستی در IIS پیکربندی شده است و از همان نام استفاده می کنید.
در نهایت، مطمین شوید که سرویس SQL Server تنظیمات firewall را به گونه ای پیکربندی کرده است که به اپلیکیشن شما اجازه اتصال به دیتابیس را بدهد.
این خطا معمولا چندین دلیل میتونه داشته باشه.
راه حل اول :
- IIS رو باز کنید.
- منوی Application Pool رو انتخاب کنید.
- گزینه tooan.ir رو پیدا کنید. روی این گزینه کلیک راست کنید و Advanced Setting رو بزنید.
- در فرم باز شده گزینه Identity رو پیدا کنید و روی LocalSystem قرار بدید. (گزینه های دیگه ای هم داره که می تونید تست کنید.)
یک مورد دیگه هم که میتونید تست کنید اگر اوکی نشد، توی Connection String مقدار Integrated Security=false رو قرار بدید.
Data Source=.; Initial Catalog=DB; user Id=sa; Password=***;Integrated Security=false; TrustServerCertificate=True
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2