File configSource 'koneksi.config' juga digunakan pada orangtua, ini tidak diperbolehkan.

9

Pertanyaan:

Saya menghadapi situasi berikut:

Aplikasi web ASP.NET .NET 4.0 yang digunakan pada mesin "vmsomething".

Aplikasi web yang berjalan pada IIS 7.5 berada di d: aplikasi web \ on vmsomething.

File konfigurasi aplikasi:

koneksi.config

<?xml version="1.0"?>
<connectionStrings>
  <remove name="server"/>
  <add name="server" connectionString="Data Source=OUR_DB_Server;Initial Catalog=MY_INITIAL_CATALOG;Persist Security Info=False;User Id=OUR_DB_User;Password=OUR_TOP_SECRET_PASSWORD;MultipleActiveResultSets=False;Packet Size=4096;Application Name=&quot;MyApplication&quot;" providerName="System.Data.SqlClient"/>
</connectionStrings>

web.config:

<?xml version="1.0"?>
<configuration>

  <connectionStrings configSource="connections.config"/>

  <system.web>
    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>
    <compilation strict="true" explicit="true">
      <assemblies>
        <add assembly="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="Microsoft.JScript, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
      </assemblies>
    </compilation>
    <authentication mode="Windows"/>
    <pages>
      <namespaces>
        <clear/>
        <add namespace="System"/>
      </namespaces>
    </pages>
    <customErrors mode="Off">
      <error statusCode="404" redirect="~/w8/index.html"/>
    </customErrors>
    <globalization uiCulture="de" culture="de-CH" requestEncoding="UTF-8" responseEncoding="UTF-8"/>
    <httpRuntime maxRequestLength="2048000" executionTimeout="86400"/>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>
</configuration>

Maka seseorang dapat mengakses aplikasi dengan dua cara:
Metode Satu: http://vmsomething.com
Metode Dua: http://vmsomething.com/my_application_virtdir
(tanpa .com, tidak dapat menambahkan tautan lokal)

Sekarang saya dapat membuka aplikasi di http://vmsomething.com .
Jika saya mencoba membuka aplikasi di http://vmsomething.com/my_application_virtdir , saya mendapatkan kesalahan ini:

Kesalahan Konfigurasi

Saya bukan admin server, dan saya tidak tahu bagaimana dia mengkonfigurasinya.
Sekarang untuk pertanyaan saya:

  • Apa yang menyebabkan kesalahan ini?
  • Bagaimana memperbaikinya ?
Kebingungan
sumber

Jawaban:

9

Alasannya adalah Anda memiliki dua situs web yang ditargetkan pada folder fisik yang sama. Dan ada warisan di web.config .

http://vmsomethingadalah orang tua dan http://vmsomething/my_application_virtdiranaknya. Web.config anak mewarisi semua elemen dari induknya. Dan web.config biasanya tidak dirancang untuk berfungsi dalam skenario seperti itu. Anda bisa mendapatkan banyak sakit kepala ketika utilitas lain yang diinstal dari nuget akan mencoba memodifikasi web.config Anda.

Jika Anda ingin mengakses situs web Anda http://vmsomething/my_application_virtdirmaka saya kira solusi termudah adalah mengubah jalur fisik untuk http://vmsomethingsesuatu yang berbeda.

Jika Anda ingin menguji cara situs web Anda bekerja tanpa menentukan virtdir, Anda dapat mengonfigurasi situs web terpisah di IIS (bukan Situs Web Default) dan menargetkannya ke jalur fisik yang sama. Maka Anda akan dapat menguji kedua cara penyebaran pada saat yang sama.

Stanislav
sumber