ไฟล์ configSource 'connections.config' ยังใช้ในพาเรนต์ซึ่งไม่อนุญาต


9

คำถาม:

ฉันเผชิญกับสถานการณ์ต่อไปนี้:

แอปพลิเคชันเว็บ ASP.NET .NET 4.0 ที่ปรับใช้บนเครื่อง "vmsomething"

แอปพลิเคชันบนเว็บที่ทำงานบน IIS 7.5 อยู่ใน d: \ webs \ myapplication บน vmsomething

ไฟล์ปรับแต่งของแอปพลิเคชัน:

connections.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>

จากนั้นหนึ่งสามารถเข้าถึงแอปพลิเคชันได้สองวิธี:
วิธีที่หนึ่ง: http://vmsomething.com
วิธีที่สอง: http://vmsomething.com/my_application_virtdir
(ที่ไม่มี. com ไม่สามารถเพิ่มลิงก์ในเครื่อง)

ตอนนี้ฉันสามารถเปิดแอปพลิเคชันบนhttp://vmsomething.comได้แล้ว
หากฉันพยายามเปิดแอปพลิเคชันบนhttp://vmsomething.com/my_application_virtdirฉันจะได้รับข้อผิดพลาดนี้:

ข้อผิดพลาดในการกำหนดค่า

ฉันไม่ใช่ผู้ดูแลระบบของเซิร์ฟเวอร์และฉันไม่รู้ว่าเขากำหนดค่าอย่างไร
ตอนนี้คำถามของฉัน:

  • อะไรทำให้เกิดข้อผิดพลาดนี้
  • จะแก้ไขได้อย่างไร?

คำตอบ:


9

สาเหตุคือคุณมีเว็บไซต์สองแห่งที่กำหนดเป้าหมายในโฟลเดอร์ฟิสิคัลเดียวกัน และมีอยู่เป็นมรดกใน web.config

http://vmsomethingเป็นผู้ปกครองและhttp://vmsomething/my_application_virtdirเป็นลูกของมัน child web.config สืบทอดองค์ประกอบทั้งหมดจากพาเรนต์ และ web.config มักไม่ได้ออกแบบมาให้ทำงานในสถานการณ์ดังกล่าว คุณจะได้รับจำนวนมากปวดหัวเมื่อติดตั้งยูทิลิตี้อื่น ๆ จาก nuget จะพยายามแก้ไข web.config ของคุณ

หากคุณต้องการเข้าถึงเว็บไซต์ของคุณhttp://vmsomething/my_application_virtdirฉันคิดว่าทางออกที่ง่ายที่สุดคือเปลี่ยนเส้นทางกายภาพสำหรับhttp://vmsomethingสิ่งที่แตกต่าง

หากคุณต้องการทดสอบว่าเว็บไซต์ของคุณทำงานอย่างไรโดยไม่ระบุ virtdir คุณสามารถกำหนดค่าเว็บไซต์แยกต่างหากใน IIS (ไม่ใช่เว็บไซต์เริ่มต้น) และกำหนดเป้าหมายไปยังเส้นทางกายภาพเดียวกัน จากนั้นคุณจะสามารถทดสอบการใช้งานทั้งสองวิธีในเวลาเดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.