1
我的web應用程序使用外部類庫來執行某些在許多地方使用的過程。我想添加到我的庫中的一件事是這個配置器類允許我加密我的web.config文件的一部分。現在通過global.asax從外部類獲取web.config請求
,我打電話從global.asax
類,它編譯和智能感知沒有任何問題,但在web應用的執行正在此錯誤:
請求不在可用這方面
我該如何解決這個問題?
public class configurator {
private Configuration _webconfig;
public const string DPAPI = "DataProtectionConfigurationProvider";
public Configuration webconfig {
get { return _webconfig; }
set { _webconfig = webconfig; }
}
public configurator() {
webconfig = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
}
public void ProtectSection(string sectionName, string provider = DPAPI) {
ConfigurationSection section = webconfig.GetSection(sectionName);
if (section != null && !section.SectionInformation.IsProtected) {
section.SectionInformation.ProtectSection(provider);
webconfig.Save();
}
}
public void EncryptConnString(string protectionMode) {
ConfigurationSection section = webconfig.GetSection("connectionStrings");
section.SectionInformation.ProtectSection(protectionMode);
webconfig.Save();
}
public void DecryptConnString() {
ConfigurationSection section = webconfig.GetSection("connectionStrings");
section.SectionInformation.UnprotectSection();
webconfig.Save();
}
}
的類被稱爲第一件事就是在Global.asax (遺憾的混合;我更喜歡C#,但在VB啓動其他項目之前,我開始用C#!):
<%@ Application Language="VB" %>
<script runat="server">
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application startup - this will encrypt the web.config
Dim thisconfigurator As mydll.configurator = New orsus.configurator()
If ConfigurationManager.AppSettings("con") = "production" Then
thisconfigurator.ProtectSection("AppSettings")
thisconfigurator.ProtectSection("connectionStrings")
thisconfigurator.ProtectSection("system.net/mailSettings/smtp")
End If
End Sub
</script>
在global.asax中的哪個點你調用它? – 2013-04-23 01:00:50
我在Application_Start子內調用它的第一件事。 – bgmCoder 2013-04-23 01:01:40