Log4Net web.config转换无法正常工作

时间:2017-09-29 13:10:44

标签: azure azure-web-sites log4net web.config-transform

当我发布到我的Azure应用程序时,我试图让web.config转换为Log4Net工作,但它永远不会改变。我在转换中还有其他几个项目,它们工作得很好。继承人我拥有的东西



<log4net>
    <appender name="AdoNetAppender"  type="log4net.Appender.AdoNetAppender"  xdt:Locator="Match(name)">
      <connectionString value="Server=production server connection details here" xdt:Transform="Replace"/>
    </appender>
  </log4net>
&#13;
&#13;
&#13;

谁能告诉我哪里出错?

这是我的配置转换文件(已删除实时详细信息)

&#13;
&#13;
<?xml version="1.0" encoding="utf-8"?>

<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <log4net>
    <appender name="AdoNetAppender"  type="log4net.Appender.AdoNetAppender"  xdt:Locator="Match(name)">
      <connectionString value="Server=server details here" xdt:Transform="SetAttributes"/>
    </appender>
  </log4net>

  <connectionStrings>
    <add name="AzureWebJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName=liveversionhere;AccountKey=liveversionhere;EndpointSuffix=core.windows.net" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="AzureWebJobsStorage"  connectionString="DefaultEndpointsProtocol=https;AccountName=liveversionhere;AccountKey=liveversionhere;EndpointSuffix=core.windows.net"  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="DefaultConnection" connectionString="Data Source=liveversionhere" providerName="System.Data.SqlClient"  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="CHPDataContext" connectionString="Data Source=liveversionhere" providerName="System.Data.SqlClient"  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="elmah" connectionString="Data Source=liveversionhere" providerName="System.Data.SqlClient"  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>

  <appSettings>
    <add key="ida:redirectUri" value="liveversionhere" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    <add key="ida:ClientId" value=liveversionhere  xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    <add key="ida:ClientSecret" value=liveversionhere"  xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
    <add key="ida:TenantId" value=liveversionhere  xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
    
  </appSettings>
  
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
   
  </system.web>
</configuration>
&#13;
&#13;
&#13;

**更新

我已经改变了转换(见下文)但它仍然无法正常工作。有没有人有什么线索在这里发生?这应该是非常简单但我发现自己浪费了我的时间只是为了获得这个基本实际工作的东西

&#13;
&#13;
<log4net>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
      <connectionString name="Log4NetConn" value="Server=productionsdetailshere" xdt:Locator="Match(name)" xdt:Transform="Replace"/>
    </appender>
  </log4net>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

根据你的描述,我做了一些测试。假设您通过VS部署Web应用程序,我通过“Build&gt; Configuration Manager”创建一个名为Release.Azure的新配置,如下所示:

enter image description here

然后我添加了一个名为Web.Release.Azure.config的Web配置文件,并按如下方式配置内容:

enter image description here

<log4net>
  <appender name="AdoNetAppender"  type="log4net.Appender.AdoNetAppender"  xdt:Locator="Match(name)">
    <connectionString value="Server=azure production server connection details here" xdt:Transform="SetAttributes"/>
  </appender>
</log4net>

注意: Replace部分下属性SetAttributes的值xdt:TransformconnectionString都可以按预期工作。

使用VS中的发布向导,在“设置”下选择我的azure配置,如下所示,并将其部署到azure Web应用程序。

enter image description here

此外,我还尝试通过Kudu Console在我的网络应用的applicationHost.xdt下创建d:\home\site文件,重启我的azure网站,然后我发现转换可行。您可以参考here了解更多详情。

<强>更新

applicationhost.xdt如下所示:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location path="%XDT_SITENAME%" xdt:Transform="InsertIfMissing" xdt:Locator="Match(path)">
    <log4net>
      <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"  xdt:Locator="Match(name)">
        <connectionString value="Server=production server connection details here" xdt:Transform="SetAttributes"/>
      </appender>
    </log4net>
  </location>
</configuration>

答案 1 :(得分:0)

必须替换整个log4net部分

连接字符串根本不起作用