Tệp configSource 'links.config' cũng được sử dụng trong phần cha mẹ, điều này không được phép.


9

Câu hỏi:

Tôi phải đối mặt với tình huống sau:

Một ứng dụng web ASP.NET .NET 4.0 được triển khai trên máy "vms Something".

Ứng dụng web chạy trên IIS 7.5 nằm trong d: \ webs \ myapplication trên vms Something.

Các tập tin cấu hình của ứng dụng:

kết nối.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>

Sau đó, người ta có thể truy cập ứng dụng theo hai cách:
Phương pháp thứ nhất: http : //vms Something.com
Phương thức thứ hai: http : //vms Something.com/my_application_virtdir
(không có .com, không thể thêm liên kết cục bộ)

Bây giờ tôi có thể mở ứng dụng trên http://vms Something.com .
Nếu tôi cố gắng mở ứng dụng trên http://vms Something.com/my_application_virtdir , tôi sẽ gặp lỗi này:

Lỗi cấu hình

Tôi không phải là quản trị viên của máy chủ và tôi không biết anh ta đã cấu hình nó như thế nào.
Bây giờ đến câu hỏi của tôi:

  • Điều gì gây ra lỗi này?
  • Làm thế nào để khắc phục nó?

Câu trả lời:


9

Lý do là bạn có hai trang web được nhắm mục tiêu trên cùng một thư mục vật lý. Và tồn tại một sự kế thừa trong web.config .

http://vmsomethinglà cha mẹ và http://vmsomething/my_application_virtdirlà con của nó. Web.config con kế thừa tất cả các thành phần từ cha mẹ của nó. Và web.config thường không được thiết kế để hoạt động trong kịch bản như vậy. Bạn có thể đau đầu khi các tiện ích khác được cài đặt từ nuget sẽ cố gắng sửa đổi web.config của bạn.

Nếu bạn muốn truy cập trang web của mình vào lúc http://vmsomething/my_application_virtdirđó tôi đoán giải pháp đơn giản nhất sẽ là thay đổi đường dẫn vật lý http://vmsomethingsang một thứ khác.

Nếu bạn muốn kiểm tra trang web của bạn hoạt động như thế nào mà không chỉ định virtdir, bạn có thể định cấu hình một trang web riêng trong IIS (không phải Trang web mặc định) và nhắm mục tiêu đến cùng một đường dẫn vật lý. Sau đó, bạn sẽ có thể kiểm tra cả hai cách triển khai cùng một lúc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.