Gagal masuk untuk pengguna 'IIS APPPOOL \ ASP.NET v4.0'

432

Saya memiliki proyek web (C # Asp.Net, EF 4, MS SQL 2008 dan IIS 7) dan saya perlu memigrasikannya ke IIS 7 secara lokal (saat ini berfungsi baik dengan CASSINI).

Secara lokal di IIS saya punya saya Default Web Sitedengan penyebaran saya. Kedua saya menyebarkan dan Default Web Siteberada di kolam ASP.NET v4.0 (mencari gambar untuk pengaturan) kerangka target kolam 4 sebagai proyek web saya. Pengaturan Kolam Saat mengunjungi situs, browser tidak menampilkan halaman dan mengizinkan browser untuk mengunduh halaman.

Saya memiliki proyek lain yang berjalan di IIS secara lokal dan mereka bekerja tanpa masalah (tetapi mereka tidak menggunakan Entity Framework).

Menggunakan Event Logger saya melihat kesalahan seperti di bawah ini:

Exception information: 
    Exception type: EntityException 
    Exception message: The underlying provider failed on Open.
   at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)


    Login failed for user 'IIS APPPOOL\ASP.NET v4.0'.
       at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       at System.Data.SqlClient.SqlConnection.Open()
       at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)

Pertanyaan terkait

UPDATE: Anda dapat membaca di sumber daya pada pertanyaan ini bahwa izin harus diberikan pada MS SQL 2008 secara manual seperti yang dijelaskan dalam jawabannya. Menggunakan IIS 7.5 dan MS SQL 2008 R2, pengaturan izin secara manual tidak diperlukan.

GibboK
sumber
2
sudahkah Anda mengizinkan izin identitas kumpulan aplikasi pada folder situs web?
Christian
Saya tidak yakin, bisakah Anda memberi tahu saya cara melakukannya?
Gibbo
sebenarnya, seperti yang dikatakan terpaut, ini bisa menjadi masalah keamanan sql. Anda yang terbaik untuk mengatur akun Pengguna NT untuk AppPool dan kemudian memberikan izin itu ke folder situs web dan ke tabel yang sesuai dalam SQL
Christian
1
@GibboK: Saya mendorong Anda untuk meninjau jawaban yang diterima di sini dan memilih jawaban yang lebih tepat. Jawaban yang diterima membawa banyak orang ke dalam lubang hitam keamanan. Ya itu berhasil. Tidak, itu sebenarnya bukan ide yang baik. Lihat komentar saya di bawah ini.
pemboros

Jawaban:

596

Sepertinya gagal mencoba membuka koneksi ke SQL Server.

Anda perlu menambahkan login ke SQL Server untuk IIS APPPOOL\ASP.NET v4.0dan memberikan izin ke database.

Di SSMS, di bawah server, rentangkan Keamanan, lalu klik kanan Masuk dan pilih "Login Baru ...".

Dalam dialog Login Baru, masukkan kumpulan aplikasi sebagai nama login dan klik "OK".

masukkan deskripsi gambar di sini

Anda kemudian dapat mengklik kanan login untuk kumpulan aplikasi, pilih Properties dan pilih "Pemetaan Pengguna". Periksa database yang sesuai, dan peran yang sesuai. Saya pikir Anda bisa memilih db_datareaderdan db_datawriter, tetapi saya pikir Anda masih perlu memberikan izin untuk menjalankan prosedur tersimpan jika Anda melakukannya melalui EF. Anda dapat memeriksa detail untuk peran di sini .

Jeff Ogata
sumber
8
terima kasih, saya melakukan apa yang Anda sedih, sekarang saya menerima kesalahan ini: Tidak dapat membuka database "SiteNameExtension" yang diminta oleh login. Login gagal. Gagal masuk untuk pengguna 'IIS APPPOOL \ DefaultAppPool'.
Gibbo
76
SANGAT PENTING: JANGAN KLIK CARI UNTUK MENCOBA UNTUK MENGonfirmasikan LOGIN! Itu tidak akan mengenalinya tetapi itu akan berhasil. Cukup ketik sebagai IIS APPPOOL \ SimonsAppPoolName. Lihat ini stackoverflow.com/questions/1933134
Simon_Weaver
6
Alih-alih lebih baik mengubah 'Identity' ke 'LocalSystem' dari IIS, seperti yang dijelaskan dalam jawaban berikutnya.
Altaf Patel
Bisakah ini bekerja ketika contoh SQL server Anda berada di mesin host lain kemudian mesin host IIS Anda? Karena saya perlu memperbaiki masalah yang sama, tetapi SQL dan IIS tidak pada mesin yang sama. Jadi menggunakan Otentikasi Windows untuk itu pengguna baru tidak akan bekerja
Segers-Ian
5
Bagi saya pengguna untuk menambahkan adalah 'IIS APPPOOL \ DefaultAppPool'. Lalu berhasil.
Marcel
343

Anda dapat mengubah ApplicationPoolIdentity dari IIS7 -> Application Pools -> Pengaturan Lanjut. Pengaturan lanjutan

Di bawah ApplicationPoolIdentity Anda akan menemukan sistem lokal. Ini akan membuat aplikasi Anda berjalan di bawah NT AUTHORITY\SYSTEM, yang merupakan login yang ada untuk database secara default.

Sunting: Sebelum menerapkan saran ini, Anda harus mencatat dan memahami implikasi keamanan.

Sebuah
sumber
51
@ Gosong, Jika Anda khawatir tentang keamanan, jangan lakukan ini. Lihat technet.microsoft.com/en-us/library/dd378907(v=WS.10).aspx
Jeff Ogata
4
Selain menjalankan kumpulan aplikasi sebagai identitas LocalSystem, saya juga harus memetakan pengguna "NT AUTHORITY \ SYSTEM" ke peran basis data
Phil
31
Ini bau. Memberi wewenang SISTEM ke aplikasi web adalah resep untuk bencana dan memungkinkan penjahat segala macam kesempatan untuk menimbulkan kejahatan tidak hanya pada aplikasi web Anda, tetapi juga seluruh server hosting. Hanya karena DB menerima login dari SYSTEM tidak berarti Anda harus menjalankan aplikasi web Anda sebagai SYSTEM. Desktop windows bahkan tidak akan membiarkan Anda berjalan sebagai SISTEM (tanpa melompat melalui lingkaran). Menjalankan webapp dengan otoritas ini adalah ide yang sangat, sangat bodoh. Anda harus membuat DB menerima identitas apppool saat ini. Saya akan -100 jika saya bisa. -1.
pemboros
8
SISTEM lebih istimewa daripada Administrator. Anda TIDAK PERNAH harus menjalankan server web Anda dengan apa pun yang mendekati tingkat itu.
Slugster
1
Saya hanya membuat akun Tamu menjadi anggota grup Administrator. Sederhana, bersih, tidak pernah memiliki masalah dengan omong kosong keamanan.
29

pastikan Anda memiliki ...

Trusted_Connection=false;

di String koneksi Anda

JGilmartin
sumber
7
Memiliki Trusted_Connection = true dalam string koneksi akan menimpa nilai otentikasi SQL dengan profil pengguna IIS Identity.
Jeff the Bear
2
dalam kasus saya menghapus: Keamanan Terintegrasi = Benar dari string koneksi memperbaikinya.
Carlos R Balebona
Bekerja untukku. Menyelamatkan hari @JefftheBear
D_Edet
26

Saya memecahkan masalah ini menggunakan sql sebagai gambar berikut.

Klik kanan pada db-> properties -> izin -> Lihat izin Server -> lalu pilih IIS APPPOOL\ASP.NET v4.0dan berikan izin.

db

DevT
sumber
Apakah proses di atas (dan gambar) yang Anda gambarkan memberikan GRANTing Server Level izin untuk Application Pool Identity itu? Kedengarannya bukan ide yang bagus.
Chris Walsh
2
Pengguna ini layak mendapatkan medali! Tidak ada yang membantu selain ini!
Khateeb321
2
@ Khateeb321 tentu saja, terima kasih banyak atas jawaban Anda.
Azxdreuwa
22

Jalankan skrip sql ini

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [WebDatabaseUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'WebDatabaseUser'
GO
Rolwin Crasta
sumber
Terima kasih, cara termudah;) +1
Zolfaghari
11

Jika dalam string koneksi yang Anda tentukan:

User ID=xxx;Password=yyy

tetapi dalam string koneksi ada:

Trusted_Connection=true;

SQL Server akan menggunakan Otentikasi Windows, sehingga nilai koneksi Anda akan diabaikan dan diganti (IIS akan menggunakan akun Windows yang ditentukan dalam profil pengguna Identity). info lebih lanjut di sini

Hal yang sama berlaku jika dalam string koneksi ada:

 Integrated Security = true;

atau

 Integrated Security = SSPI;

karena Windows Authentication akan digunakan untuk terhubung ke server database. info lebih lanjut di sini

manusia laba-laba
sumber
10

buka iis -> kumpulan aplikasi -> temukan kumpulan aplikasi Anda yang digunakan dalam aplikasi

masukkan deskripsi gambar di sini

pilih kumpulan aplikasi Anda yang digunakan untuk aplikasi klik kanan pilih pengaturan lanjutan

masukkan deskripsi gambar di sini

Pilih identitas kumpulan aplikasi masukkan deskripsi gambar di sini

pilih bawaan sebagai Sistem Lokal dan klik ok

Lijo
sumber
7

Saya benci ApplicationPoolIdentity. Saya selalu menetapkan Akun Pengguna Windows sebagai akun di AppPools.

Seperti yang dikatakan terpaut, itu terdengar seperti masalah keamanan database. Jadi buat akun pengguna NT, tetapkan ke ASP.NET v4.0 AppPool dan kemudian berikan izin pada folder situs web dan ke tabel yang relevan dalam SQL.

Kristen
sumber
maaf, tidak tahu bagaimana melakukannya, bisakah Anda menunjukkan saya tutorial? terima kasih atas bantuan Anda dalam hal ini
GibboK
2
Jangan lakukan ini, ada alasan IIS mengubah identitas kumpulan aplikasi, learn.iis.net/page.aspx/624/aplikasi-pool-identities
Julien Lebot
@ LeSnip3R broken link
Adaptabi
6

Jangan gunakan Keamanan Terpadu. MenggunakanUser Id=yourUser; pwd=yourPwd;

Ini menyelesaikan masalah.

bonh
sumber
4

Saya memiliki masalah ini dan sebenarnya disebabkan oleh sesuatu yang berbeda - Saya memiliki pengguna 'IIS APPPOOL \ ASP.NET v4.0' di database saya tetapi masih tidak berfungsi.

Saya baru-baru ini memutakhirkan Instalasi SQL Server saya dan dalam proses itu Pengguna telah terputus dari Login - jadi ada 'IIS APPPOOL \ ASP.NET v4.0' di bawah Database -> Keamanan -> Pengguna TAPI tidak ada Pengguna yang tidak di bawah Keamanan -> Login.

Menambahkan Login 'IIS APPPOOL \ ASP.NET v4.0' ke Keamanan -> Login, SQL Server secara otomatis memetakannya ke Pengguna dalam database (ini dulunya harus dilakukan secara manual) dan masalah diperbaiki.

Sang Coder
sumber
1
hanya untuk menambahkan ... di sisi kiri, di bawah Izin ... centang db_writer dan db_reader; dan pilih basis data yang akan memanfaatkan izin tersebut.
benjieb
4

Hal pertama yang perlu Anda hapus jika Anda menggunakan otentikasi windows dan Anda tidak menyebutkan kata sandi nama pengguna dalam string koneksi Anda kemudian:

Apa yang terjadi ketika Anda menjalankan kode melalui localhost: ketika Anda menjalankan klien uji wcf Anda dari localhost, itu akan dapat berkomunikasi dengan basis data ketika aplikasi mode debug lokal memanggil basis data dengan layanan akun Anda. Jadi ia memiliki akses ke basis data karena devenv.exe berjalan di bawah akun pengguna Anda.

Tetapi ketika Anda menggunakan layanan web Anda di IIS. Sekarang pahami layanan ini berjalan di bawah IIS bukan di bawah akun Anda. Jadi Anda perlu menetapkan hak akses ke layanan IIS untuk mengakses server sql untuk otentikasi windows. Di sini layanan web Anda tidak akan dapat berkomunikasi dengan server SQL karena masalah hak akses dan Login Gagal untuk pengguna_______ (di sini pengguna Anda akan datang)

Jadi jika Anda menggunakan otentikasi windows untuk menghubungkan database Anda, Anda hanya perlu mengubah pengaturan kumpulan Aplikasi IIS. Anda perlu mengubah identitas kumpulan Aplikasi IIS ke Sistem lokal.

Berikut adalah Langkah-langkah untuk otentikasi Windows WCF:

1) Buka IIS (windows + R (run) lalu ketik inetmgr, lalu klik ok)

2) klik dua kali nama PC Anda di bawah Koneksi

3) Klik Kolam Aplikasi

4) Pilih kumpulan aplikasi Anda (DefaultAppPool)

5) Kemudian di bawah tindakan di klik kanan Pengaturan Lanjutan:

6) Pergi ke bagian Model Proses dan

7) klik pada Identity.

8) Sekarang pilih LocalSystem.

Sekarang buka studio manajemen server sql Anda: buka run-> lalu ketik ssms -> lalu tekan ok Dalam ssms, login menggunakan akun otentikasi windows Anda. Buka tab keamanan memperluas tab login maka Anda akan dapat melihat akun Anda.

Sekarang buka properti akun Anda, masuk ke pemetaan pengguna, lalu pilih database yang ingin Anda hubungkan, lalu periksa peran layanan keanggotaan yang ingin Anda gunakan untuk database yang dipilih. klik ok.

(Untuk layanan jaringan yaitu pengguna intranet, Anda perlu mengkonfigurasi pengaturan di atas untuk pengguna NT AUTHORITY \ SYSTEM)

tambahkan Trusted_Connection = Benar; properti dalam string koneksi Anda. Simpan & gunakan layanan web. Mulai ulang kumpulan aplikasi.

Anda akan dapat menghubungkan database sekarang.

Amar Gadekar
sumber
Sempurna! LocalSystem memperbaiki masalah ini untuk saya :)
totaliter
3

Saya mendapat pesan ini dan saya menggunakan Otentikasi Windows di server web.

Saya ingin pengguna web yang saat ini diautentikasi untuk diautentikasi terhadap database, daripada menggunakan IIS APPPOOL \ ASP.NET v4 Pengguna yang ditentukan dalam App Pool.

Saya menemukan dengan memasukkan yang berikut ini di web.config memperbaiki ini untuk saya:

<system.web>
  <identity impersonate="true" />
</system.web>

https://msdn.microsoft.com/en-us/library/bsz5788z.aspx

Saya melihat Jawaban lain tentang membuat nama pengguna AppPool di SQL DB atau hanya menggunakan SQL Auth. Keduanya akan benar jika Anda tidak ingin menangkap atau mengamankan setiap pengguna Windows di dalam SQL.

Tom

tommylux
sumber
Ini menyelesaikannya untuk kami dan kami tidak yakin mengapa. IIS / AppPool baru saja membajak connectionstring yang secara eksplisit mengatakan "Integrated Security = true"? Mengapa??
Guy
3

1_in SqlServer Security => Login => NT AUTHORITY \ SYSTEM => RightClick => Property => UserMaping => Pilih YourDatabse => Publik && Pemilik Select => OK 2_In IIs Aplikasi Pools DefaultAppPool => Pengaturan Lanjut => Identitas => LocalSystem => Ok

mehranSattary
sumber
2

Pengaturan identitas hanya membuat ini berfungsi di halaman saya.

charles
sumber
2

Cassini menjalankan situs web Anda sebagai identitas pengguna Anda sendiri ketika Anda memulai aplikasi Visual Studio. IIS menjalankan situs web Anda sebagai App Pool Identity. Kecuali App Pool Identity diberikan akses ke Database, Anda mendapatkan kesalahan.

IIS memperkenalkan App Pool Identity untuk meningkatkan keamanan. Anda dapat menjalankan situs web di bawah App Pool Identity default, atau Buat Pool App baru dengan namanya sendiri, atau Buat Pool App baru dengan nama sendiri yang berjalan di bawah Akun Pengguna (biasanya Akun Domain).

Dalam situasi jaringan (yang tidak ada di Azure) Anda bisa membuat App Pool baru berjalan di bawah akun pengguna Domain Direktori Aktif; Saya lebih suka ini daripada akun mesin. Hal tersebut memberikan keamanan granular dan akses granular ke sumber daya jaringan, termasuk basis data. Setiap situs web berjalan pada App Pool yang berbeda (dan masing-masing berjalan di bawah akun Pengguna Domain sendiri).

Terus menggunakan Keamanan Terintegrasi Windows di semua String Koneksi. Dalam SQL Server, tambahkan pengguna Domain sebagai login dan berikan izin ke database, tabel, SP dll berdasarkan per situs web. Misalnya DB1 yang digunakan oleh Website1 memiliki login untuk User1 karena Website1 berjalan pada App Pool sebagai User1.

Satu tantangan dengan penggelaran dari Visual Studio bawaan DB (misalnya LocalDB) dan Server Web bawaan ke lingkungan produksi berasal dari kenyataan bahwa pengguna pengembang SID dan ACL-nya tidak boleh digunakan dalam lingkungan produksi yang aman. Microsoft menyediakan alat untuk penyebaran. Tapi sayang pengembang yang buruk yang terbiasa dengan segala sesuatu hanya bekerja di luar kotak di VS IDE baru yang mudah dengan localDB dan localWebServer, karena alat ini akan sulit digunakan untuk pengembang itu, terutama untuk pengembang seperti itu yang kurang memiliki dukungan SysAdmin dan DBAdmin atau pengetahuan khusus mereka. Meskipun demikian penyebaran ke Azure lebih mudah daripada situasi jaringan perusahaan yang disebutkan di atas.

subsci
sumber
2

Jika string koneksi Anda ditambahkan di web.config Anda, pastikan bahwa "Keamanan Terpadu = false;" jadi itu akan menggunakan id dan kata sandi yang ditentukan dalam web.config.

<connectionStrings>
    <add providerName="System.Data.SqlClient" name="MyDbContext" connectionString="Data Source=localhost,1433;Initial Catalog=MyDatabase;user id=MyUserName;Password=MyPassword;Trusted_Connection=true;Integrated Security=false;" />
</connectionStrings>
Daming Fu
sumber
2

Seperti yang ditunjukkan, Jangan gunakan Otentikasi Windows, Gunakan Otentikasi SQL Server

Juga jika Anda membuat koneksi menggunakan dialog "Server Connection", pastikan untuk memeriksa koneksi di web.config. Kemungkinan Anda membuat / memodifikasi koneksi dan disimpan sebagai koneksi tepercaya di web.config. Cukup gunakan otentikasi ini

<add name="MyDBConnectionString" connectionString="Data Source=localhost;Initial Catalog=Finantial;User ID=xxx;Password=xxx" providerName="System.Data.SqlClient"/>

yang seharusnya memperbaiki kesalahan.

Hammad Khan
sumber
2

Cara lain untuk memberikan izin ke database untuk pengguna IIS APPPOOL\ASP.NET v4.0adalah sebagai berikut.
masukkan deskripsi gambar di sini


  1. Tambahkan Pengguna Baru dengan Nama Pengguna dan nama Login seperti IIS APPPOOL\ASP.NET v4.0skema default Anda.
  2. Pergi ke Skema dan Keanggotaan Pemilik, Periksa db_datareader, db_datawriter
shana
sumber
1

Saya pikir saya akan memposting ini sebagai jawaban karena relevan dengan pertanyaan dan dapat menjawabnya dalam beberapa kasus.

Pesan yang sama muncul juga jika basis data tidak ada!

Pastikan string koneksi Anda tidak salah eja, menunjuk ke instance server yang benar, dll.

colmde
sumber
1

Saya memiliki masalah yang sama saya menyelesaikannya dengan mengubah Integrated Security=Trueke false sekarang ini berfungsi

subramanya46
sumber
1

sesuatu yang serupa terjadi pada saya apa yang berhasil bagi saya adalah mengubah properti Integrated Security = True ke Integrated Security = false di web.config situs web

Erik Rodriguez
sumber
ini bekerja! Saya baru saja menghapus keamanan terintegrasi
Charles Xavier
0

Sudahkah Anda melakukan apa yang @Teddydisarankan dan Anda MASIH mendapatkan kesalahan yang sama?

Pastikan Anda mengubah pengaturan untuk kumpulan aplikasi yang sesuai dengan direktori virtual Anda dan bukan server induk. Setiap direktori virtual memiliki AppPool sendiri dan tidak mewarisi.

Simon_Weaver
sumber
0

Di DefaultAppPool atur NetworkService di properti Identity dan di Sql Server tambahkan User Network Service dan berikan izin yang sesuai untuk database Anda, itu bekerja dengan sangat baik untuk saya, saya telah menguji secara lokal tapi saya pikir ini adalah konfigurasi terbaik untuk menghubungkan dari sembarang komputer lain dalam jaringan. ketika Anda mengatur LocalSystem di Identity di IIS itu bekerja dengan baik dan tidak perlu membuat pengguna lain di Sql Server tapi saya pikir itu tidak akan berfungsi di lingkungan jaringan.

Luis
sumber
0

Saya mengalami masalah yang sama dengan pengujian ASP.NET Web API

Dikembangkan Web.Host di Visual Studio 2013 Express Database dibuat dalam SQL Server 2012 Express Uji dilaksanakan menggunakan built in IIS Express (berfungsi) Dimodifikasi untuk menggunakan IIS Lokal (dari halaman properti - opsi web) Uji berlari dengan Fiddler Received error - tidak dapat membuka database untuk penyedia .... mengutip 'APPPOOL \ DefaultAppPool'

Solusi yang berhasil.

Di IIS

Klik kumpulan aplikasi 'Set DefaultAppPool' Set Identify = 'ApplicationPoolIdentity' .NET framework = v4.0 (meskipun aplikasi saya adalah 4,5)

Di SQL Server Management Studio

Klik kanan pada folder Keamanan (di bawah mesin SQL Server sehingga berlaku untuk semua tabel) Klik kanan pada Pengguna dan tambahkan 'IIS APPPOOL \ DefaultAppPool' Dalam aman di kolom 'Hibah' periksa opsi yang ingin Anda berikan. Mengenai hal di atas jika Anda seorang DBA, Anda mungkin tahu dan ingin mengendalikan apa opsi itu. Jika Anda seperti saya, seorang pengembang hanya ingin menguji layanan WEB API Anda yang kebetulan juga mengakses SQL Server melalui EF 6 dalam gaya MVC maka cukup centang semuanya. :) Ya saya tahu tetapi itu berhasil.

Brian Quinn
sumber
0

Jika Anda menambahkan login baru, pastikan bahwa di bawah properti server (klik kanan -> properti) / keamanan, mode otentikasi diatur ke sqlserver dan windows bukan hanya windows.

badr slaoui
sumber
0

Tambahkan "Semua Orang" di bawah keamanan. Jika Anda menambahkan Server dan pengguna masuk ke database, maka ini adalah sesuatu yang Anda lewatkan. Semoga ini membantu.

avinava basu
sumber
Kami menetapkan izin sesuai dengan kebutuhan kami. Bagian otentikasi ditangani dan kami memeriksa otorisasi melalui kode untuk memungkinkan akses. Jangan ragu untuk mengoreksi saya jika Anda merasa ada ambiguitas. Terima kasih.
avinava basu
0

Sebagai catatan, jika Anda menemukan kesalahan ini setelah beralih dari LocalDBke SQLEXPRESS, pastikan database sudah masuk SQLEXPRESS. Anda dapat memverifikasi ini di Management Studio.

Saya memiliki masalah yang sama ketika menggunakan Entity Frameworksetelah beralih ke SQLEXPRESS from LocalDB. Saya harus menjalankan Update-Databaseperintah. Saya berhasil terhubung setelah itu.

Irshu
sumber
0

Saya melakukan persis seperti yang dikatakan @JeffOgata tetapi saya mendapatkan kesalahan:

Windows NT user or group 'IIS APPPOOL\ASP.NET v4.0' not found. Check the name again. (Microsoft SQL Server, Error: 15401)

Saya melihat pesan kesalahan saya lagi dan katanya Login failed for user 'IIS APPPOOL\DefaultAppPool'.

Setelah menambahkan pengguna bernama IIS APPPOOL\DefaultAppPoolsemuanya berfungsi.

Ogglas
sumber
0

Saya menggunakan SQL Server Profiler (tersedia di SSMS => menu Tools) dan melihat di sana (ketika IIS berusaha untuk terhubung ke database) bahwa pengguna IIS saya karena suatu alasan NT AUTHORITY \ IUSR, tidak peduli semua langkah yang direkomendasikan dalam jawaban dalam pertanyaan ini . Jadi saya menambahkan pengguna itu ke SQL Server, dan itu berhasil ...

alexkovelsky
sumber
0

Di formulir web Asp.net,

kesalahan ini diperbaiki saat menginstal asp.net dari:

Server Manager> Kelola> Tambahkan Peran dan Fitur> Peran Server> Server Web (IIS)> Server Web> Pengembangan Aplikasi> ASP.NET 3.5 / 4.6 diinstal.

masalah saya diperbaiki.

Zolfaghari
sumber