2013-03-14 85 views
3

我似乎被卡住了。我有一個asp.net mvc 4應用程序,我想從服務類發送電子郵件。該服務類位於與解決方案中的mvc項目分開的C#庫項目中。我想將電子郵件配置設置爲從配置文件中調用的單獨文件。以下內容應該放在mvc項目的web.config中,還是在服務項目中創建一個app.config文件?C#ASP.NET MVC從配置文件訪問SMTP設置

<system.net> 
    <mailSettings> 
     <smtp configSource="MailSettings.config" /> 
    </mailSettings> 
</system.net> 

然後,我有這個叫做MailSettings.config一個單獨的文件:

<smtp from="[email protected]"> 
    <network host="smtp.server.com" port="587" userName="[email protected]" password="password" enableSsl="true" /> 
</smtp> 

我曾嘗試創建僅在system.net工具和服務項目的app.config文件,但郵件設置總是空當我嘗試:

MailSettingsSectionGroup settings = (MailSettingsSectionGroup)ConfigurationManager.GetSection("system.net/mailSettings"); 
SmtpClient SmtpServer = new SmtpClient(settings.Smtp.Network.Host); //get null exception for settings.Smtp.Network.Host) 

而且,我已經試過,包括app.config文件的郵件設置,以排除具有MailSettings.config文件是這一問題,仍生成一個空指針。

我嘗試的例子,用於從web.config文件訪問它像這樣:

Configuration configurationFile = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
MailSettingsSectionGroup mailSettings = configurationFile.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup; 

在服務類雖然WebConfigurationManager是斷章取義等是Request.ApplicationPath。所以如果我必須從web.config文件中獲取它,我是否必須將http請求對象傳遞給服務類?這似乎是一個壞主意。

回答