2010-08-17 28 views
8

Tôi đã sử dụng bài viết Creating a Flexible Configuration Section Handler để tạo Trình xử lý phần cấu hình linh hoạt trong ứng dụng của tôi.Mã hóa các phần tùy chỉnh của web.config

Tôi cũng thấy bài viết này có tên là Encrypting Custom Configuration Sections on the OdeToCode blog, về cách mã hóa các phần của tệp web.config.

Từ bài viết đầu tiên, chúng tôi có mã web.config này.

<?xmlversion="1.0"encoding="utf-8"?> 
<configuration> 
    <configSections> 
     <sectionname="StyleSheetSettings_1"  
      type="FifteenSeconds.Core.BasicConfigurator"/> 
    </configSections> 
    <StyleSheetSettings_1> 
     <StyleSheets> 
      <Style SheetName="Page"Href="Styles/Page.css"Media="screen"/> 
      <StyleSheetName="Custom"Href="Styles/Custom.css"Media="screen"/> 
      <StyleSheetName="Print"Href="/Lib/Styles/Print.css"Media="print"/> 
     </StyleSheets>  
    </StyleSheetSettings_1> 
</configuration> 

Tôi đã cố gắng sử dụng mã sau để mã hóa mã bằng cách sử dụng một cái gì đó giống như mã dòng lệnh sau.

aspnet_regiis.exe -pef "StyleSheetSettings_1" C:\Test\ 

Tôi nhận được lỗi sau

Không thể tải loại FifteenSeconds.Core.BasicConfigurator ' từ lắp ráp' System.Web, Version = 4.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a3a '.

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

0

cố gắng loại thay đổi để bao gồm tên lắp ráp

type="FifteenSeconds.Core.BasicConfigurator, MyWebApplication" 

này giả định các BasicConfiguration là trong Web của bạn App

+2

Sau khi thêm loại tên lắp ráp = "FifteenSeconds.Core.BasicConfigurator, FifteenSeconds.Core", tôi vẫn nhận được lỗi sau. Mã cấu hình phần ... Đã xảy ra lỗi khi tạo bộ xử lý cấu hình cho StyleSheetSettings_1: Không thể tải tệp hoặc lắp ráp 'FifteenSeconds.Core' hoặc một trong số các cookie phụ thuộc . Hệ thống không thể tìm thấy các tập tin được chỉ định. –

+0

DLL ở đâu tương ứng với Web.Config –

+0

Bạn có thể trả lời http://stackoverflow.com/questions/9528681/listing-users-with-access-to-netframeworkconfigurationkey-acl không? – Lijo

8

Giải pháp duy nhất được biết đến là một hack khủng khiếp. Sao chép assembly (và tất cả các phụ thuộc) vào thư mục .NET framework có liên quan (nơi có aspnet_regiis.exe).

+0

Bạn có thể vui lòng trả lời http://stackoverflow.com/questions/9528681/listing-users-with-access-to-netframeworkconfigurationkey-acl không? – Lijo

+0

@Adam - Xin chào, Cảm ơn. Điều này giải quyết vấn đề của tôi :-) – Jeb

0

Tôi đã gặp sự cố tương tự khi tham chiếu một loại trong tệp cấu hình của mình. Như Conrad Frix đã đề xuất, bạn cần tham chiếu đến tên assembly sau khi tham chiếu kiểu không gian tên. Tôi đã mắc sai lầm khi đặt ra những gì tôi nghĩ rằng tên lắp ráp là thay vì kiểm tra nó có thể có một tên khác với tên của dự án. Bạn có thể chắc chắn bằng cách nhấp chuột phải vào dự án trong Visual Studio và đi đến các thuộc tính. Kiểm tra kỹ để đảm bảo rằng dự án xuất ra một assembly có cùng tên như bạn đang chỉ định trong web.config của bạn.

0

Something như thế này có thể làm việc, tôi havent thử nó bản thân mình và không phải là một giải pháp làm sạch

http://blogs.msdn.com/b/kaevans/archive/2004/08/19/217177.aspx trong đó sử dụng System.Configuration.NameValueSectionHandler.

(System.Collections.Specialized.NameValueCollection) WebConfigurationManager.GetSection("SectionName") 

Tôi đã thử cách này, mặc dù sử dụng System.Configuration.SingleTagSectionHandler và

(Hashtable)WebConfigurationManager.GetSection("SectionName"); 

http://vaultofthoughts.net/UsingSingleTagSectionHandlerInsteadOfAppSettings.aspx

12

Đây là một cách giải quyết cho vấn đề này (tìm thấy tại http://www.dotnetnoob.com/2013/01/how-to-encrypt-custom-configuration.html). Nhận xét phần tử phần cho phần tùy chỉnh trong phần tử configSections (/ configuration/configSections) trước khi chạy lệnh aspnet_regiis và phần tùy chỉnh sẽ được mã hóa.

<configSections> 
    <!--<section name="myCustomSection" type="My.Product.CustomSection, My.Product.Assembly/>--> 
</configSections> 


c:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -pef myCustomSection C:\path\to\app 
Microsoft (R) ASP.NET RegIIS version 4.0.30319.17929 
Administration utility to install and uninstall ASP.NET on the local machine. 
Copyright (C) Microsoft Corporation. All rights reserved. 
Encrypting configuration section... 
Succeeded! 
+0

Nó đã làm công việc, Cảm ơn bạn sir! – Ben

+0

Công việc tuyệt vời, cảm ơn bạn! Làm cho tinh thần, phần nhận xét là chỉ cần thiết cho các ứng dụng để khử muối cho loại quy định và chỉ messes với mã hóa. –

+0

3 năm sau, lỗi này vẫn chưa được khắc phục. Không biết. – Zoomzoom

0

Tôi vừa giải quyết vấn đề tương tự rất dễ dàng.Bạn cần chỉ định thư viện trong thuộc tính "type".

Thay vì:

<section name="StyleSheetSettings_1" type="FifteenSeconds.Core.BasicConfigurator"/> 

Hãy thử:

<section name="StyleSheetSettings_1" type="FifteenSeconds.Core.BasicConfigurator, FifteenSeconds"/> 

Vấn đề của tôi là gần như chính xác cùng, mặc dù tôi đã sử dụng các thư viện .NET để thay thế.

này:

<section name="Roles" type="System.Configuration.AppSettingsSection" /> 

Trở thành:

<section name="Roles" type="System.Configuration.AppSettingsSection, System.Configuration" /> 

Hy vọng rằng công trình này.

Các vấn đề liên quan