Kesalahan: allowDefinition = 'MachineToApplication' di luar level aplikasi

193

Saya telah mengunduh proyek online di ASP.Net. Saat menjalankan aplikasi saya mendapatkan kesalahan

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.

Perubahan apa yang harus saya buat di web.config atau di tempat lain untuk membuat ini berfungsi?

Deepali
sumber
53
Tidak ada jawaban yang ditemukan di web yang berfungsi untuk saya. Masalah saya terpecahkan dengan menampilkan semua file / folder tersembunyi dan menghapus objfolder.
The Muffin Man
6
Masalah ini masih bermanifestasi dalam VS2012. Saya telah membuka laporan bug dengan Microsoft. Siapa pun yang mengalami masalah silakan membarui laporan bug connect.microsoft.com/VisualStudio/feedback/details/779737/…
Eric J.
4
menghapus folder obj menyelesaikan masalah ini untuk saya juga. terima kasih @Nick! (maaf untuk kebangunan rohani)
Jordan Wayne Crabb
SOLUSI DI SINI: stackoverflow.com/questions/9300927/…
benni_mac_b
dalam kasus saya, web.config tambahan di sub folder menyebabkan masalah ini. Ketika saya menghapus web.config tambahan kesalahan itu hilang
Dio Phung

Jawaban:

96

Saya baru saja mengalami "kegembiraan" ini. Tampaknya muncul sendiri setelah saya menerbitkan aplikasi web dalam mode rilis.

Satu-satunya cara untuk secara konsisten menyelesaikan masalah yang saya temukan adalah dengan mengikuti daftar periksa ini:

  1. Solusi bersih sementara solusi Anda dikonfigurasi dalam mode Rilis.
  2. Solusi bersih sementara solusi Anda dikonfigurasi dalam mode Debug.
  3. Bangun sementara solusi Anda dikonfigurasi dalam mode Debug.
John Reilly
sumber
18
Satu-satunya jawaban yang bekerja untuk saya juga. Saya memiliki banyak kesalahan lain yang menunggu saya setelah ini tetapi mereka tidak berhubungan. Saya tiba di sini dengan mengatur MvcBuildViewske true.
Benjamin
+1 BTW: Saya pikir alasan ini berhasil bagi saya adalah karena bangunan yang paling baru saya miliki adalah Debug . Saya membuka solusinya, melakukan perbaikan bug dan berusaha membangun dalam mode R Release . Cleaning in Release tidak bekerja tetapi pembersihan di Debug berhasil. (Mungkin kombinasi dari 2 adalah yang dibutuhkan, yaitu membersihkan semua referensi lama ke dll, apakah Debug atau Rilis ).
Scotty.NET
4
Saya melakukan pembersihan , kemudian pergi ke * properti proyek -> Web -> Buat Direktori Virtual dan kemudian masalah terselesaikan
gldraphael
Yang bersih dan dibangun kembali saat dalam mode debug adalah semua yang diperlukan untuk saya. Tidak perlu beralih antara rilis dan debug. Tapi ya, BERSIH itu sangat penting. Itulah inti masalahnya.
markaaronky
1
Bersih tidak tersedia dalam kasus saya, yang belum pernah saya lihat sebelumnya. Ini adalah aplikasi VB.NET yang sangat lama yang saya warisi dari seorang mantan kolega.
tnk479
82

Temui saja posting ini dan itu terjadi pada saya.
Hanya Cleanproyek dan kesalahannya hilang. (harus berupa bug VS2010)

Eduardo Molteni
sumber
solusi ini jika Anda mendapatkan ini sebagai Kesalahan di Visual Studio.
gideon
22
Terkadang bersih tidak membersihkan objfolder. Ini terkadang perlu dihapus juga.
jaypeagi
1
Tidak Bersih atau menghapus objek tidak berfungsi. Solusi Johnny Reilly berhasil untuk saya.
Benjamin
Saya harus menjalankan bersih dalam mode debug dan rilis untuk menyingkirkan ini. Menjalankannya hanya untuk debug sepertinya tidak menyelesaikan masalah.
Juha Palomäki
Masalah yang sama masih ada di VS2013SP1. Bersih sederhana memungkinkan saya menyebarkan lagi.
Brian Knoblauch
25

Saya baru saja mengalami masalah ini ketika membangun versi kedua situs web saya. Itu tidak terjadi ketika saya membangunnya pertama kali.

Saya baru saja menghapus folder bin dan obj, menjalankan Solusi Bersih dan membangunnya lagi, kali ini tanpa masalah.

xiecs
sumber
2
Ini adalah satu-satunya solusi yang bekerja untuk saya di VS Express 2012 untuk Web. Juga, saya hanya mulai mendapatkan kesalahan ini setelah saya membuat konfigurasi solusi, dan menambahkan MvcBuildViews disetel ke true ke PropertyGroup di sumber .csproj.
Jeremy Cook
20

Tidak ada Anda perlu mengatur direktori tempat Anda meletakkan situs web sebagai aplikasi web di dalam IIS .


sumber
1
Meskipun secara teknis itu adalah perubahan "di tempat lain untuk membuat karya ini";)
Zhaph - Ben Duguid
2
dan ini solusinya jika Anda mendapatkan ini sebagai kesalahan di aplikasi web Anda! = P
gideon
Saya sudah siap sebagai aplikasi. Solusi Johnny Reilly berhasil dalam kasus saya.
Benjamin
Saya hanya mencoba agar aplikasi templat Webforms berfungsi. Tidak masalah di localhost tetapi tidak pada server di LAN. Solusi ini berhasil untuk saya: VS2015 CE, Windows Server 2008 di LAN saya. Saya menggunakan halaman MS ini untuk menjelaskan apa yang harus dilakukan pada IIS: support.microsoft.com/en-gb/kb/917413 . Tidak ada perubahan pada kode templat.
Tim
16

Kesalahan ini terjadi ketika Anda mencoba untuk membuka proyek sebagai situs web. Cara termudah untuk menentukan apakah Anda telah membuat situs web atau proyek adalah dengan memeriksa folder solusi Anda (yaitu tempat Anda menyimpan kode Anda) dan melihat apakah Anda memiliki file * .sln di direktori root, jika Anda melakukannya maka Anda akan Saya sudah membuat proyek.

Hanya untuk menambahkan, saya mengalami kesalahan ini sekarang ketika saya mencoba untuk membuka proyek yang saya buat beberapa waktu lalu dengan memilih "File", "Open Website" dari menu Visual Studio sedangkan saya harus memilih "File", "Open Project" sebagai gantinya. Saya facepalmed segera setelah saya menyadari :)

Pete
sumber
ini juga masalah saya
mgrenier
13

Dalam Visual Studio 2013 saya berjuang dengan ini untuk sementara waktu dan itu cukup mudah untuk diselesaikan cukup ikuti apa yang dikatakan pengecualian "direktori virtual tidak dikonfigurasi sebagai aplikasi di IIS"

Dalam kasus saya saya telah WebServiceditanam di dalam IIS websitesehingga

  1. Saya membuka situs web di manajer IIS
  2. klik kanan folder WCF
  3. diklik Convert to Application
  4. dan kemudian dikirimkan bersama Ok

WCF kembali dan berjalan.

Marek
sumber
1
Saya mengalami masalah ini ketika saya memindahkan aplikasi ke Situs Web Default. Poin 3 melakukan trik untuk menyelesaikan masalah saya.
bikram s.
Ini bekerja untuk saya ketika kami pindah ke server web baru. Setelah melakukan "Konversi ke Aplikasi", simbol folder berubah, dan aplikasi web ASP.NET MVC mulai bekerja di server web itu.
Greg Barth
11

Kesalahan menunjukkan bahwa kode yang Anda gunakan mengharapkan direktori virtual untuk diatur pada IIS.

Cari dokumentasi dan tambahkan direktori virtual yang diperlukan. Itu harus direktori yang memiliki web.configdi dalamnya (bukan direktori root).

Oded
sumber
8
Menghapus web.config kedua di direktori yang lebih rendah memecahkan masalah bagi saya.
Lucas B
10
Salah satu orang saya memiliki nya <authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>dalam bukunya Web.configdi Viewsketimbang folder trunk, yang menyebabkan masalah ini.
Serj Sagan
10

Jika Anda memiliki proyek MVC dengan tampilan bangunan yang diaktifkan, salah satu solusinya adalah menghapus folder obj sebelum membangun. Tambahkan ke file proyek:

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

Berikut ini artikelnya: Cara menghapus folder bin dan / atau obj sebelum build atau deploy

Dukun
sumber
8

Perubahan web.config baru-baru ini mungkin ada di file web.config yang salah.

Sebuah <machineKey...>properti telah ditambahkan ke Tampilan / web.config . Tidak peduli berapa banyak Pembersihan dan Pembangunan Kembali kesalahan tetap ada. Cara mengatasinya adalah memindahkan properti ke root /web.config .

SushiGuy
sumber
Kami tidak sengaja menyalin induk Web.config ke folder / Views. Letakkan versi asli dan jauh lebih kecil untuk folder Views di sana dan situs berfungsi lagi.
Kakek
6

jika Anda pernah mengalami kesalahan ini

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

SOLUSI
Saya memiliki masalah yang sama dengan VS 2012. Saya menyelesaikannya dengan

  1. Bongkar proyek Anda saat ini
  2. edit .csproj Anda
  3. Temukan ini <MvcBuildViews>false</MvcBuildViews>
  4. Alih-alih palsu perubahan nilai yang benar
  5. Muat kembali proyek Anda dan Anda seharusnya tidak memiliki kesalahan ini lagi

Jika Anda memiliki maka satu solusinya adalah menghapus konten folder obj dalam proyek yang dihasilkan oleh kompiler.

visar_uruqi
sumber
18
Itu aneh, pengaturan MvcBuildViewsuntuk trueadalah bagaimana saya punya kesalahan di tempat pertama.
Benjamin
Saya juga mulai mendapatkan pesan kesalahan setelah mengubah MvcBuildViews menjadi true. Saya menyingkirkan pesan kesalahan dengan mengubah nilai kembali ke false.
Juha Palomäki
3
Saya melakukan "Solusi bersih" di kedua mode rilis dan debug dan sekarang build juga bekerja dengan<MvcBuildViews>true</MvcBuildViews>
Juha Palomäki
@ JuhaPalomäki super manis! Terima kasih.
Haroon
Saya memiliki situasi yang berlawanan dengan situasi @visar_uruqi. Maksud saya di saya .csproj berkas saya memiliki MvcBuildViews pilihan diatur ke benar dan ketika saya set ke false kesalahan dihilangkan (tidak ditampilkan).
Bronek
5

Dalam kasus saya, masalah muncul hanya setelah saya menerbitkan proyek ke subdirektori. Karena kurangnya pengetahuan saya, saya telah menempatkan web_publishsubdirektori saya di dalam web_projectdirektori.

Jelas bahwa web_publishisinya juga sama Web.configdengan yang dikandung proyek. Namun, web_projecttidak tahu bahwa saya web_publishharus dihindari ketika mencari Web.configdi subdirektori bersarang. Dengan cara ini, Web.configs digandakan dan kesalahan muncul.

Solusinya adalah menempatkan saya di web_publishtempat lain.

semangat
sumber
5

Dalam kasus saya ada folder "Cadangan" yang berisi salinan lain dari seluruh situs web di sana. Ini berarti yang lain web.configdan build gagal dengan kesalahan ini. Saya menghapus folder "Cadangan", melakukan solusi Bersihkan pada pembuatan Debug dan Rilis, dan kesalahannya hilang.

Druid
sumber
Saya memiliki situasi yang serupa, seseorang telah membuat subfolder "Diterbitkan" di dalam root Website pada disk (ini adalah Proyek Web lama, salah satu yang tanpa file Solusi), dan ini memiliki Web.config di dalamnya. Kesalahan terjadi ketika Visual Studio mencoba membangunnya, dan tidak ada jumlah folder Pembersihan / Penghapusan "obj" dll yang memperbaiki itu, tentu saja. Saya telah melihat beberapa contoh kesalahan ini, dan hampir selalu merupakan duplikat Web.config bersembunyi di suatu tempat ... (pesan kesalahan yang sangat buruk juga!)
Detail
4

Dalam kasus saya,

Solusi berisi 6 proyek, 1 direktori utama dan 5 sub direktori. semua sub direktori memiliki web.config.

Saat menjalankan halaman apa pun di dalam sub direktori, saya mendapatkan kesalahan yang sama.

Saya menghapus baris ini dari web.config,

<authentication mode="Windows"/>

itu berhasil untuk saya.

p_champ
sumber
Baris apa yang Anda hapus?
Mark Berry
Baris itu ada di sana tetapi tidak muncul karena beberapa masalah indentasi kurasa. Saya mengedit dan menempelkan kode dalam blok kode, itu menunjukkan sekarang. Silakan periksa dan beri tahu saya jika saya dapat membantu sesuatu.
p_champ
Terima kasih, itu menegaskan baris bahwa itu gagal untuk saya juga. Saya hanya memiliki satu situs, jadi saya mengatasinya dengan membuka sebagai Situs Web daripada proyek.
Mark Berry
4

Bersihkan proyek Anda Hapus folder / obj (mungkin menggunakan publish dan deploy? - ada bug di dalamnya)

NicoJuicy
sumber
Hanya solusi yang berhasil untuk saya. Sampai di sini dengan menetapkan <MvcBuildViews> true </MvcBuildViews>.
Paul
3

Masalah saya adalah saya secara tidak sengaja menerbitkan layanan web saya ke lokasi yang telah selesai pada instalasi baru VS2010.

Saya telah menerbitkan ke folder bernama PreCompiledWeb , dan keberadaan web.config saya curiga mengacaukannya.

Saya hanya nuked folder, dan menyegarkan proyek.

Ketika mengklik dua kali kesalahan ini - saya butuh file web.config yang salah, yang memberi saya tip.

gaijintendo
sumber
2

Ini mungkin masalah versi seperti Anda mengunduh proyek .Net framework 2.0 dan ingin membukanya ke dalam VS2008 maka Anda perlu memutakhirkan ke versi terbaru dan VS akan membuat Backup folder di direktori root yang sama. Anda akan dapatkan jawabannya di sini .

gofor.net
sumber
Jawaban ranganh di sini memberikan beberapa perincian lebih lanjut.
Mark Berry
2

Saya memiliki kesalahan ini ketika membangun solusi dengan Web Deployment Project yang dibuat menjadi solusi saya. Saya mengatasi kesalahan dengan menghapus folder tempat Proyek Penyebaran Web dibangun. Folder ini ditentukan dalam atribut "Project Folder" dari properti WDP

Ilya
sumber
2

Hapus folder tempat sampah dan keberatan. Kemudian buat kembali solusinya.

rovsen
sumber
Untuk File Explorer, gunakan kueri pencarian "obj" kind: = folder dan "bin" kind: = folder untuk menemukan / menghapus folder-folder ini. Ini berhasil untuk saya.
Robert J. Good
2

Rupanya ada dua file web.config dalam solusi saya. Saya menggunakan MVC4 dan ada file konfigurasi lain di bawah Views dan saya membuat perubahan pada file yang salah. Memperbaiki sana membantu saya.

Tetapi Anda selalu dapat mengubah pengalihan / rute default di file global.asax.

Gautam Beri
sumber
1

Mungkin Anda memiliki folder proyek sub asp.net dalam folder proyek yang tidak dikonfigurasi sebagai direktori virtual. Atur proyek untuk berjalan di IIS.

funwithcoding
sumber
1

Saya mengalami masalah ini lebih sering jika "true" diaktifkan di file proyek.

  1. Jadikan salah

Seperti yang dikatakan Jonny:

  1. Solusi bersih sementara solusi Anda dikonfigurasi dalam mode Rilis.
  2. Solusi bersih sementara solusi Anda dikonfigurasi dalam mode Debug.
  3. Bangun sementara solusi Anda dikonfigurasi dalam mode Debug.
Riccardo Bassilichi
sumber
1

Saya punya proyek yang saya tidak ingin menjadi aplikasi web saya ingin itu menjadi folder. Jawabannya adalah menghapus file web.config sekaligus. Itu hanya milik root aplikasi.

Rob Sedgwick
sumber
1

Jika Anda menghadapi masalah ini saat menerbitkan situs web atau aplikasi Anda di beberapa server, solusi sederhana yang saya gunakan adalah mengonversi folder yang berisi file ke aplikasi web.

ehabh86
sumber
4
Hai, selamat datang di Stack Overflow! Bisakah Anda memperluas jawaban Anda? Bisakah Anda menjelaskan cara mengonversi folder ke Aplikasi Web? Ini akan membantu orang lain memahami jawaban Anda dengan lebih baik.
Jesse
1
Di IIS Manager, di bawah panel Connections di sebelah kanan, Anda klik kanan direktori di bawah situs yang Anda buat (atau Situs Web Default), dan pilih Convert to Application.
Aske B.
1

Saya punya masalah yang sama di VS 2013 setelah menerbitkan proyek saya dalam mode debug. Masalahnya telah dipecahkan dengan menghapus obj / file

Grigory Bushuev
sumber
1

Saya punya proyek situs web.

Dalam kasus saya, saya telah memindahkan file solusi ke jalur lain dan itu menyebabkan masalah. Saya mengembalikannya ke lokasi sebelumnya dan masalah keluar.

Daniel Silva
sumber
1

Untuk yang masih mencari, solusi saya adalah menghapus folder bin dan obj dan restart visual studio sepertinya memperbaikinya.

Ricky G
sumber
1

Melalui Visual Studio, saya telah menerbitkan Layanan WCF melalui FTP , ke server eksternal. Ini bekerja dengan baik secara lokal, dan ketika menerbitkan ke server internal, tetapi tidak ke eksternal. Solusinya adalah mempublikasikan tanpa menyediakan Site Path (dengan kata lain, mempublikasikan langsung ke root direktori virtual).

Saya tidak yakin mengapa ini berhasil, karena saya sudah mencoba memindahkan file ke root melalui Klien FTP eksternal - di antara banyak upaya lain, termasuk semua yang tercantum di sini. Mungkin ada sesuatu dengan profil publikasikan, seperti itu untuk FabianVal . Tetapi saya tidak lagi ingin menguji lagi pada saat ini, karena saya sedang terburu-buru untuk mempercepat setelah semua hari yang terbuang untuk masalah ini.

Aske B.
sumber
0

tip 1: bersihkan & kemudian bangun kembali.

tip 2: tutup saja VS dan buka lagi.

tip 3: proyek yang diunduh mungkin berada di dalam sub folder lain ... buka folder yang berisi file .net Anda.

c: / demo1 / demo / (semua file)

Anda harus membuka demo dari vs ... bukan demo1.

Pelajar
sumber
0

Saya mencoba setiap solusi di atas, tetapi tidak ada yang berhasil untuk masalah saya. (Saya yakin ada 1000 solusi untuk masalah ini) Untuk skenario saya, saya berusaha untuk mempublikasikan layanan web WCF yang saya uji dalam produksi.

Namun, saya gagal menyadari bahwa dalam produksi kami hanya HTTPS, artinya kami mengarahkan semuanya ke HTTPS. Ternyata, saya menunjuk ke layanan melalui HTTP, bukan HTTPS, sehingga menyebabkan kesalahan. Solusi dalam skenario ini adalah dengan mengubah protokol alamat menjadi HTTPS daripada HTTP.

Saya harap itu membantu beberapa jiwa miskin di luar sana mencoba memecahkan masalah ini.

ROFLwTIME
sumber