Adalah kesalahan untuk menggunakan bagian yang terdaftar sebagai allowDefinition = 'MachineToApplication' di luar level aplikasi.
Baris teratas di semua halaman aspx saya di direktori / portal / saya memiliki pesan kesalahan ini, dan saya tahu itu adalah yang umum. Saya telah googled pesan kesalahan ini tanpa akhir, dan saya melihat banyak posting memberitahu saya untuk mengkonfigurasi / portal / folder sebagai aplikasi di IIS (yang saya miliki), dan lebih banyak posting mengatakan saya telah membuat web.configs (tetapi tidak ada posting yang menawarkan panduan menuju solusi).
Setup saya adalah saya memiliki web.config di direktori root saya, dan kemudian saya mencoba membuat portal perusahaan, di direktori / portal /. Direktori / portal / memiliki web.config sendiri (perlu).
Baris web.config saya 50 seperti ini:
<customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/>
<anonymousIdentification enabled="true"/>
<authentication mode="Forms"/>
<membership defaultProvider="MyProvider">
Jadi saya punya domain.com/web.config DAN domain.com/portal/web.config ... jadi halaman domain.com/portal/default.aspx saya tidak akan dimuat.
Apa solusi nyata untuk ini? Apakah saya entah bagaimana menemukan cara untuk menggabungkan root web.config dengan web.config / portal / direktori saya, atau apakah saya jauh dari basis di sini?
Bimbingan apa pun akan sangat dihargai!
sumber
Jawaban:
Hanya untuk informasi latar belakang; Informasi konfigurasi untuk situs web ASP.NET didefinisikan dalam satu atau lebih file Web.config. Pengaturan konfigurasi diterapkan secara hierarkis. Ada file Web.config "global" yang merinci informasi konfigurasi dasar untuk semua situs web di server web; file ini tinggal di
%WINDIR%\Microsoft.Net\Framework\version\CONFIG
folder. Anda juga dapat memiliki file Web.config di folder root situs web Anda. File Web.config ini dapat mengesampingkan pengaturan yang didefinisikan dalam file Web.config "global", atau menambahkan yang baru. Selain itu, Anda mungkin memiliki file Web.config di subfolder situs web Anda, yang menentukan pengaturan konfigurasi baru atau mengganti pengaturan konfigurasi yang ditentukan dalam file Web.config lebih tinggi dalam hierarki.Elemen konfigurasi tertentu di Web.config tidak dapat didefinisikan di luar level aplikasi, yang berarti bahwa mereka harus didefinisikan dalam file Web.config "global" atau dalam file Web.config di folder root situs web. The
<authentication>
unsur adalah salah satu contohnya. Pesan kesalahan di atas menunjukkan bahwa ada file Web.config di salah satu subfolder situs web yang memiliki salah satu elemen konfigurasi ini yang tidak dapat ditentukan di luar level aplikasi.Sumber: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
Anda telah mengidentifikasi 2 pendekatan yang mungkin dengan benar.
1 - Bergantung pada konten web.config kedua Anda dan apakah pengaturan Anda mengizinkan (yaitu metode otentikasi yang sama) - tambahkan
<authentication>
pengaturan dan elemen lain yang harus didefinisikan secara global ke dalam web.config teratas2 - Jika Anda tidak dapat menggabungkan konten web.config maka Anda harus dapat mengubah sub-folder menjadi aplikasi web di IIS dengan mengikuti langkah-langkah yang terdapat dalam tautan ini diarsipkan di bawah ini. Tautan asli tidak lagi berfungsi. (lihat diarsipkan ) Semoga ini bisa membantu.
sumber
Untuk apa nilainya, saya telah menerima kesalahan, "Ini adalah kesalahan untuk menggunakan bagian yang terdaftar sebagai allowDefinition = 'MachineToApplication' di luar level aplikasi." dan akhirnya menyelesaikannya dengan membersihkan direktori \ myWebApp \ obj \ Debug dan \ myWebApp \ obj \ Release. Saya juga perlu mengatur halaman startup default. Tapi, kemudian aplikasi mulai berjalan dengan baik. HTH.
sumber
Seperti RY4N katakan di atas, itu belum tentu web.config di folder Project Anda yang menyebabkan masalah. Dalam beberapa kasus saya telah menemukan bahwa menjalankan build di bawah profil Debug akan meninggalkan detritus di folder Debug di bawah proyek yang dimaksud. Sering ada file web.config di sini yang mengarah ke kesalahan di atas ketika Anda kemudian menjalankan build di bawah profil Release.
Solusi yang bekerja untuk saya di sini adalah menghapus seluruh folder Debug yang dibuat oleh build sebelumnya di bawah direktori proyek.
sumber
Itu juga terjadi di komputer rumah saya tetapi HANYA ketika saya mengaktifkan Build Views pada konfigurasi rilis DAN membangun konfigurasi Release. Kalau tidak, itu tidak terjadi.
Meskipun opsi Build Views sangat bagus, saya akhirnya menonaktifkannya karena "kesalahan" ini akan selalu muncul dan biarkan saya tidak dapat menjalankan aplikasi.
sumber
Hanya berkata
Jika Anda memutakhirkan (mis. 2008 -> 2010) Sebuah proyek Visual studio akan membuat cadangan (jika Anda mengizinkannya) dalam solusi proyek yang ditambahkan ke solusi baru, Webconfig lama adalah tempat kesalahan yang disebutkan di atas kemudian dapat berasal dari .
" File Web.config di salah satu subfolder situs web daripada memiliki salah satu elemen konfigurasi ini yang tidak dapat didefinisikan di luar level aplikasi. " @Benni_mac_b
Untuk memperbaikinya: Cukup hapus folder cadangan dari proyek dan solusi, dalam skenario ini.
sumber
Saya telah datang dengan alasan lain yang memungkinkan bahwa ini terjadi.
Saya memiliki aplikasi web yang lebih lama dibangun pada 2.0. Saya memigrasikannya ke solusi 4.5.
Aplikasi dibangun dan didebug dengan baik ketika di dalam Visual Studio, tetapi kemudian ketika saya mencoba untuk mempublikasikan aplikasi web, kesalahan ini terjadi berulang-ulang.
Saya akhirnya menemukan masalahnya adalah bahwa Build Action untuk file web.config adalah "Sumber Daya Tertanam" daripada "Konten". Juga, Direktori Salin Ke Keluaran diatur ke "Selalu Salin" daripada "Jangan salin". Saya tidak tahu kapan pengaturan ini dibuat, tapi saya percaya itu kembali ke versi 2.0 aplikasi.
Memodifikasi pengaturan untuk file web.config memungkinkan tindakan Publikasi dalam publikasi Visual Studio 2012 bekerja dengan sempurna.
sumber
Saya memiliki masalah yang sama dalam proyek MVC. Kesalahan terjadi ketika saya mencoba menerbitkan. Ternyata folder obj harus kosong (atau setidaknya tidak mengandung apapun
web.config
).Berlari
Clean
tidak membantu saya.Saya memecahkan masalah dengan membersihkan
obj
folder sebelum membangun apa pun (membangun proyek tidak akan memakan waktu lama dalam kasus saya).Saya membongkar proyek, dan menambahkan yang berikut ke Target BeforeBuild
Semoga ini membantu
sumber
"Adalah kesalahan untuk menggunakan bagian yang terdaftar sebagai allowDefinition = 'MachineToApplication' di luar level aplikasi. Kesalahan ini dapat disebabkan oleh direktori virtual yang tidak dikonfigurasi sebagai aplikasi di IIS."
Saya punya masalah ini di VS.NET. Ternyata ketika saya mengkonfigurasi beberapa transformasi konfigurasi saya keliru mengatur properti file Web.config "Salin selalu". Saya biasanya mengatur file transformasi saya ke "Salin selalu" tetapi meninggalkan file root web.config sebagai "Jangan salin".
Hati-hati, karena mengubah properti web.config juga mengubah semua transformasi bersarang.
Jadi, untuk memperbaiki:
1) Ubah web.config menjadi "Jangan salin"
2) Secara opsional, jika Anda menggunakan transformasi konfigurasi, aturlah ke "Salin selalu"
3) Hapus folder obj dan bin dari solusi (ini mungkin tidak terlihat jadi pilih simpul proyek di Solution Explorer dan klik tombol toolbar "Tampilkan semua file".
4) Publikasikan
Bekerja untukku.
sumber
Saya mengalami kesalahan ini hanya selama penerbitan aplikasi.
Properti file web.config (dan transformasi) ditetapkan sebagai:
Build Action - None
Copy to Output - Always
.Solusinya adalah mengubah pengaturan ke:
Build Action - Content
Copy to Output - Do not Copy
sumber
Saya juga memiliki masalah ini dan muncul setelah saya menggunakan Penerbit Wizard untuk mempublikasikan situs saya ke web.
Setelah banyak menggali, saya menemukan laporan Bug ini di situs web Connect, https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level
Seorang wakil MS menjawab dan menjelaskan mengapa ini adalah masalah yang terjadi ketika menerbitkan dia juga menyertakan solusi sementara yang memperbaiki masalah ini untuk saya.
sumber
Hapus dan buat Direktori virtual lagi. Klik Kanan dan Ubah Direktori virtual menjadi " Aplikasi "
sumber
Klik pada
Web.config
file dari Solution explorer dan klik kanan "Properties" dan ubah menjadi "Copy to Output Directory: Don't copy".sumber
Bagi saya alasannya adalah bahwa folder obj berada di bawah folder situs web dan beberapa web.config muncul setelah membangun konfigurasi yang berbeda. Saya memecahkan masalah di bawah vs2012 dengan memindahkan folder obj keluar dari situs web. Untuk melakukan ini, saya telah menambahkan secara manual (di notepad) $ (SolutionDir) \ Obj \ $ (Konfigurasi) untuk setiap konfigurasi dalam file proyek situs web.
sumber
Saya mengalami masalah yang sama ketika saya akan menerbitkan situs, jika saya membangun situs saya tidak mendapatkan masalah tetapi saat menerbitkan saya akan mendapatkan kesalahan yang mengerikan ini:
Saya mencoba segala sesuatu yang telah dinyatakan di sini dalam posting ini ke no resort, apa yang berhasil bagi saya adalah hanya membuat profil publikasi baru dengan persis sama dengan yang saya gunakan dan yang berfungsi dengan baik, jangan mendapatkan kesalahan dengan profil baru tetapi lakukan dengan yang lama. Tidak yakin apa bedanya tapi setidaknya saya bisa menerbitkan proyek MVC saya.
Semoga ini bisa membantu seseorang !!
sumber
Inilah alasan lain - Jika Anda menyalin seluruh aplikasi web ke salah satu sub-foldernya sendiri, Anda akan mendapatkan kesalahan ini. Saya berhasil melakukan ini ke situs lama ketika menyalin dari satu mesin ke komputer lain - baru saja diminta untuk melihat situs tersebut setelah jeda sekitar 2 tahun dan kesalahan terjadi. Mengambil sedikit gambaran - karena saya tidak memiliki banyak file konfigurasi.
sumber
Saya memiliki masalah ini, dan diselesaikan dengan membersihkan solusi saya dari majelis lama dll.
dari vs: Build> Clean Solution
lalu Bangun Kembali.
sumber
Mulai Windows -> buka Situs -> IIS -> klik kanan situs Anda -> Kelola Situs Web -> Pengaturan Lanjut -> jelajahi Jalur Fisik -> cobalah untuk memilih sub-folder dari begitu Anda memilih saat ini.
logikanya adalah bahwa file konfigurasi web di dalam subfolder sedang mencoba untuk membuat perubahan dan ini tidak diizinkan, harus folder yang dipilih: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
sumber
Saya juga mendapatkan kesalahan ini ketika mencoba menggunakan sub situs web di situs web.
Solusinya adalah:
<authentication mode="None" />
JIKA mendapatkan masalah lain jangan ragu ping saya, mungkin saya akan menemukan bantuan.
sumber
Saya menerima kesalahan ini di localhost di Visual Studio 2017, dan restart sederhana Visual Studio menyelesaikan masalah ini.
Saya menyadari masalah ini juga dapat disebabkan oleh memiliki lebih dari satu web.config; satu dalam sub-folder misalnya. jika Anda memiliki banyak file web.config dengan sengaja untuk aplikasi lain: pastikan direktori tersebut tidak dilihat sebagai direktori virtual.
sumber
Pastikan Anda tidak terjebak dalam mengakses situs lokal Anda yang salah melalui localchost / mysite.test yang seharusnya menjadi mysite.test yang akan memberi Anda kesalahan ini.
Ketika Anda mengakses situs Anda seperti localhost / dir_name, dalam hal ini, web.conf Anda berada di bawah level root dan karenanya kesalahan ini.
sumber
Saya memigrasikan aplikasi dan aplikasi memiliki beberapa aplikasi (beberapa web.configs) di dalamnya .. apa yang saya lakukan adalah masuk ke IIS kemudian klik kanan pada sub folder kemudian "Konversi ke Aplikasi" dan itu berhasil.
sumber
Saya mendapat kesalahan ini secara berbeda dari orang lain:
Saya bermigrasi dari vs2010 dengan proyek penerapan web ke vs2012 dan profil publikasi web baru.
Saya membuat proyek publikasi web baru di vs2012 untuk mempublikasikan ke sistem file (kami memiliki pembuat installer terpisah ini adalah aplikasi komersial) dan saya menerbitkan ke folder yang ada di dalam proyek web yang ada yang terhubung dengan IIS.
Ini menyebabkan kesalahan pada saat penerbitan yang membingungkan saya pada awalnya karena saya menerbitkan ke sistem file, bukan IIS (saya pikir).
Solusi adalah mengubah mempublikasikan ke folder ke luar proyek web.
sumber
Itu baik-baik saja,
localhost
tetapi ketika saya menerbitkan rilis di server, saya memulai kesalahan yang sama untuk beberapa halaman. Kemudian saya membersihkan solusinya dan membangun kembali & menerbitkan, semuanya diperbaiki.sumber
Terkadang, jawaban sederhana adalah yang terbaik. Saya punya dua file web.config di proyek saya. Yang ada di tingkat utama adalah di mana saya perlu melakukan perubahan untuk menangani batas waktu sesi saya (yang memicu masalah ini). Saya memiliki file konfigurasi terpisah di direktori Razor Views saya, yang memiliki pengaturan untuk Razor dan pandangannya. Saya menambahkan bagian di sana (bukan di level aplikasi!). Tanpa sadar saya memiliki dua file web.config terpisah, saya mencoba segalanya kecuali mencari yang sudah jelas.
sumber
kesalahan saya adalah secara tidak sengaja menyalin menempel web.config di dalam folder lain di server web
sumber
Saya mendapatkan kesalahan ini ketika saya lupa untuk mengubah proyek yang diterbitkan menjadi aplikasi dalam IIS.
sumber