2013-08-29 47 views
26

Trong Visual studio, Solution-> Web.Project-> Properties-> Web, tôi đã thay đổi Url dự án của mình từ http://localhost:51123/ đến http://localhost:51123/NewProjectName và tôi vẫn gặp phải lỗi này:IIS express: Không thể thêm mục nhập tập hợp trùng lặp của loại 'thêm' với thuộc tính khóa duy nhất 'tên' được đặt thành

"Không thể thêm mục nhập bộ sưu tập trùng lặp loại 'thêm' với thuộc tính khóa duy nhất 'tên' được đặt thành ...." trên mọi mô-đun được thêm.

Thêm thẻ xóa hoạt động nhưng sau đó nó phải là một vấn đề ngay cả trước khi tôi thay đổi url. Bất kỳ đề xuất?

+0

Hi Prasith, tôi có thể hỏi mà giải pháp làm việc cho bạn xin vui lòng? – sanepete

Trả lời

40

Tôi nghĩ IIS Express có thể có 2 <application> -blocks và cả hai sẽ trỏ đến cùng một PhysicalPath.

Đến tập tin cấu hình IIS Express: My Documents\IISExpress\config\applicationhost.config

Tìm kiếm NewProjectName

Thay đổi physicalPath cho ứng dụng gốc để cái gì khác. Trỏ nó vào một thư mục trống.

nên giống như thế này:

<site name="NewProjectName" id="1"> 
     <application path="/" applicationPool="Clr4IntegratedAppPool"> 
      <virtualDirectory path="/" physicalPath="c:\Temp" /> 
     </application> 
     <application path="/NewProjectName" applicationPool="Clr4IntegratedAppPool"> 
      <virtualDirectory path="/" physicalPath="c:\sourcecode\NewProjectName" /> 
     </application> 
     <bindings> 
      <binding protocol="http" bindingInformation="*:51123:localhost" /> 
     </bindings> 
     </site> 
+0

Điều này làm việc cho tôi. Cảm ơn. – adriaanp

+0

Đối với IIS, tệp cấu hình là @ C: \ Windows \ System32 \ inetsrv \ config –

+4

Trong Visual Studio 2015 vị trí tệp cofig là solutionFolder \ .vs \ cofig. Lưu ý rằng .vs bị ẩn. – user1568891

5

Nếu bạn tạo một trang web IIS với đường dẫn vật lý giống như các thư mục dự án, và sau đó sử dụng nó tạo một thư mục ảo cho dự án, bạn sẽ xem vấn đề này.
Tệp Web.config của bạn đang được tải hai lần.
Thay vào đó là orjanto chỉ ra, tạo một thư mục trống và trỏ trang web IIS đến nó và sau đó sử dụng nó để tạo một thư mục ảo từ Visual Studio.

+0

Cảm ơn bạn đã sửa nó cho chúng tôi. – radbyx

11

Ngoài ra, đảm bảo bạn không có tệp web.config trùng lặp trong một trong các thư mục chính (ví dụ: tệp sao lưu web.config). Đó là vấn đề với tôi!

+0

Mẹo hay! Tôi đã có một triển khai web tự động đi awry và triển khai các web.config lên một thư mục.Việc xóa tệp đó đã giải quyết vấn đề này cho tôi. –

8

Tôi bắt đầu nhận được lỗi này một cách ngẫu nhiên. Tôi nhận thấy rằng iis express có hai địa điểm. enter image description here

Lớp kép này khiến IIS đọc web.config từ trang web đầu tiên và thứ hai tại \ WFM. do đó tìm kiếm bản sao. Tôi vừa dừng tất cả các trang web và xóa \ WFM khỏi đường dẫn dự án web của tôi. Tuy nhiên bạn có thể xóa các tệp và cặp từ tệp tạm thời của bạn trong IIS express. Trong trường hợp của tôi, tôi đã có nhiều phiên bản của giải pháp và project \ user config của một giải pháp có một đường dẫn phụ trong URL dự án web. VS 2015 đã thêm nó hoặc ai đó đã kiểm tra cấu hình người dùng của riêng họ vào TFS. Hy vọng điều này sẽ giúp người khác.

+4

Trong trường hợp ai đó đang tìm kiếm điều này: tôi phải xóa thư mục .vs-Folder trong đường dẫn giải pháp và tệp .user. – MHolzmayr

+0

Mỏ trông như thế này, nhưng việc xóa các tệp tạm thời không hoạt động đối với tôi. Tôi đã phải xóa toàn bộ nút của trang web khỏi ứng dụng IIS Express của tôi, được tìm thấy trong ... \ My Documents \ IISExpress \ config – Danny

+0

Tôi vô tình tạo một thư mục ảo IIS Express mới cho cùng một ứng dụng. Tôi tìm thấy một mục trùng lặp trong thư mục .vs, bên trong 'applicationhost.config'. Khi tôi đã xóa mục nhập trùng lặp, mọi thứ đã hoạt động trở lại. –

0

Url dự án của tôi trong tab Web bên trong thuộc tính dự án được trỏ đến url sai và tôi không thể thay đổi nó ("Bạn có muốn tạo Thư mục ảo không?" Và VS bị khóa trong vòng lặp (Có -> Không thể tạo , Không -> Hoạt động bị hủy) cho đến khi tôi tự hoàn nguyên Url về trạng thái (không chính xác) trước đó. Giải pháp là chạy VS dưới dạng Quản trị viên. Tôi có thể thay đổi url đó và mọi thứ bắt đầu hoạt động. Hy vọng điều này sẽ hữu ích!

0

Bạn có thể thấy rằng sau khi nâng cấp lên gói dịch vụ Windows 10 mới nhất vào tháng 6 năm 2017, vấn đề này là do một số nút nhất định có vẻ xuất hiện dưới cấu hình gốc (machine.config). một lần nữa.

0

Tôi gặp vấn đề cùng loại. Chạy trang web của tôi được xuất bản trên IIS, cùng một lỗi được hiển thị.

Tôi đã xem tệp web.config trong thư mục wwwroot (ngoài thư mục ứng dụng). Tôi đã xóa tệp này và ứng dụng đã chạy OK.

Tìm tệp web.config được đặt trong một thư mục sai (phía trên ứng dụng thư mục của bạn).

Chúc may mắn!

0

answer rằng @orjanto đã đăng giải quyết được sự cố cho tôi, nhưng tôi đã gặp phải sự cố thêm trên đó. Sau khi khắc phục, Internet Explorer vẫn cho rằng trang HTML của tôi là một thư mục thay vì tệp.

Tôi có bản sao trong tập tin cấu hình IIS Express:

<site name="MyAPI" id="56"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
      <virtualDirectory path="/" physicalPath="C:\source\repos\MyAPI" /> 
    </application> 
    <application path="/login.html" applicationPool="Clr4IntegratedAppPool"> 
      <virtualDirectory path="/" physicalPath="C:\source\repos\MyAPI" /> 
    </application> 
    <bindings> 
      <binding protocol="http" bindingInformation="*:57018:localhost" /> 
      <binding protocol="https" bindingInformation="*:44302:localhost" /> 
    </bindings> 
</site> 

Lưu ý path = "/ login.html" trong < ứng dụng thứ hai > nhập cảnh.

Trang của tôi đã chuyển hướng đến "localhost: 57018/login.html /" giống như một thư mục.

Xóa mục nhập thứ hai đã khắc phục sự cố với các tệp cấu hình trùng lặp, tuy nhiên tôi vẫn gặp sự cố khi Internet Explorer có vẻ nghĩ rằng /login.html/ là một thư mục (Internet Explorer 11). Để chẩn đoán sự cố, tôi đã kiểm tra Chrome và Chrome hoạt động tốt.

Tôi đã truy cập Internet Explorer, đi tới Công cụ> Tùy chọn Internet> Tab chung. Sau đó, trong phần "Lịch sử duyệt web", tôi đã xóa Lịch sử, Cookie và Dữ liệu trang web, & Nhiệt độ. Tệp Internet.

0

Tất cả web.config tệp hoạt động với nhiều mức độ thừa kế mức độ kế thừa tại máy, IIS, dự án và thư mục cấp vị trí, với mỗi mức độ đặc hiệu cao hơn.

Nếu bạn nhận được lỗi này, nó có nghĩa là bạn đã hoặc:

  1. gia tăng cùng phím này hai lần trong cùng một tập tin (không kể từ khi bạn sẽ đã nhìn thấy nó)
  2. Chìa khóa tương tự đã tồn tại trong một tệp riêng cao hơn lên chuỗi thừa kế

có thể có rất nhiều nguyên nhân gốc rễ khác nhau cho # 2, nhưng nếu bạn muốn sang bên kia bước họ, bạn chỉ có thể loại bỏ bất kỳ khai báo trước đó và sau đó tái thêm của riêng bạn ở cấp đó (tôi sẽ trả tiền tốt cho một tính năng upsert).

Vì vậy, chỉ cần thêm <remove> thẻ như thế này cho bất kỳ yếu tố vi phạm:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
 <remove name="ErrorLog" /> <remove name="ErrorMail" /> <remove name="ErrorFilter" />  
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" /> 
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" /> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" /> 

    </modules> 
</system.webServer>