Asp.net mvc web.config和web.debug.config不同

时间:2016-04-04 12:06:18

标签: c# asp.net asp.net-mvc visual-studio-debugging

我的visual studio解决方案窗口中有Web.configWeb.debug.configWeb.release.config个文件。

我想为发布和调试设置不同的电子邮件配置。

所以我设置了Web.debug.config文件

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <network host="localhost" port="587" defaultCredentials="true"/>
        <specifiedPickupDirectory pickupDirectoryLocation="C:\Temp\Mail\Debug"/>
      </smtp>
    </mailSettings>
  </system.net>

我设置了我的Web.release.config

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <network host="localhost" port="587" defaultCredentials="true"/>
        <specifiedPickupDirectory pickupDirectoryLocation="C:\Temp\Mail\Release"/>
      </smtp>
    </mailSettings>
  </system.net>

当我运行applciaitons时,我的设置无法加载到SmtpClient对象。

为什么不从Web.debug.config

中获取设置

enter image description here

4 个答案:

答案 0 :(得分:4)

这仅适用于发布项目的情况,而不适用于IDE。在这里阅读更多内容:

https://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx

答案 1 :(得分:2)

如前所述,它不是webconfig而不是转换。在以发布模式构建/发布时,转换将转换为web.config。

您必须在web.release.config中设置一些元信息,以便如何处理转换,例如:

<system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <network host="localhost" port="587" defaultCredentials="true"/>
        <specifiedPickupDirectory pickupDirectoryLocation="C:\Temp\Mail\Release"/ xdt:Transform="Replace">
      </smtp>
    </mailSettings>
</system.net>

这将指示转换将web.config中的specifiedPickupDirectory标记替换为web.release.config中的标记。

如果你想在构建时进行转换,而不仅仅是在发布时,你必须将一个TransformXml添加到csproj中的BeforeBuild部分。

答案 2 :(得分:1)

像Merryweather所说,这是一个应用于基本配置之上的转换。 SlowCheetah提供的扩展程序允许您右键单击以预览配置转换。您可以通过visual studio库访问这些:

https://visualstudiogallery.msdn.microsoft.com/05bb50e3-c971-4613-9379-acae2cfe6f9e

答案 3 :(得分:0)

https://devblogs.microsoft.com/aspnet/asp-net-web-projects-web-debug-config-web-release-config/

调试用于开发环境

发布生产环境

Web.config适用于本地计算机