加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Web.config Build vs Release transform不工作

发布时间:2020-12-15 18:40:35 所属栏目:asp.Net 来源:网络整理
导读:我有一个通过实体框架连接到远程数据库的ASP.NET Web应用程序项目。在调试期间(例如在本地计算机上运行项目),数据库的IP地址与释放期间不同(例如,将项目上传到我的Web服务器并从浏览器运行)。到目前为止,我一直手动更改Web.config文件中的数据库连接字符
我有一个通过实体框架连接到远程数据库的ASP.NET Web应用程序项目。在调试期间(例如在本地计算机上运行项目),数据库的IP地址与释放期间不同(例如,将项目上传到我的Web服务器并从浏览器运行)。到目前为止,我一直手动更改Web.config文件中的数据库连接字符串,以便在两者之间进行切换(基本上我不得不使用连接字符串,一个名为“Debug”和一个“Release”,只要我部署了名称)。

现在我只是注意到,应该可以通过Web.config Transformation Syntax将自动修改的连接字符串放在Web.Release.config版本中,然后在DLL被安装在Release配置下时使用。

但是对我来说似乎不起作用

这是我的常规Web.config文件的相关部分(它保存本地使用的调试连接字符串):

<?xml version="1.0"?>
<configuration>

  <connectionStrings>
    <!-- Debug connection string. Release connection string is in Web.Release.config file -->
    <add name="DatabaseEntities" connectionString="A" providerName="System.Data.EntityClient" />
  </connectionStrings>

</configuration>

这是Web.Release.config文件,根据示例,如果DLL处于“释放”模式,则应将“DatabaseEntities”连接字符串“A”替换为“B”

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

  <!-- Replace the DatabaseEntities connection string with the Release version (local IP address) -->
  <connectionStrings>
    <add name="DatabaseEntities"
      connectionString="B"
      xdt:Transform="Replace" xdt:Locator="Match(name)"/>
  </connectionStrings>

</configuration>

(显然“A”和“B”只是我真正的连接字符串的占位符)

当我调试应用程序(例如只需按F5)时,使用默认的Web.config,我可以访问数据库。然后,我通过配置管理器将构建配置更改为Release。解决方案中的所有项目都设置为Release配置。然后我构建解决方案(只需通过构建,甚至通过完整的重建(例如清理,重建))。我将新建的DLL上传到Web服务器,以及Web.config和Web.Release.config文件,当我尝试访问数据库时,我仍然无法通过调试IP地址访问数据库因此找不到它…

看来Web.Release.config文件完全被忽略,或至少连接字符串没有被替换。

我究竟做错了什么?转换语法是否错误?我没有正确地在发布模式下构建应用程序吗?

感谢任何帮助…

解决方法

Then I Build the solution (just via Build or even via a complete
rebuild (e.g. Clean,Rebuild)). I upload the newly built DLLs to the
webserver,as well as the Web.config and Web.Release.config files

有你的错误:如果您简单地构建,Web配置转换将不适用于您的本地环境。你需要发布。

您的部署过程似乎很奇怪:您只是复制DLL,Web.config和web.Release.config。对我来说,似乎你复制了你的源代码而不是编译的应用程序。已发布的WebApplication不包含web.release.config。

您应该将您的项目(右键单击WebApplication – > Publish)发布到本地文件系统,然后从中复制文件,或使用您选择的其他部署方法。

2年前,我写了一篇关于web.config转换的文章。它为您提供了VS 2010(VS 2012中发布对话框更改)的分步教程:http://www.tomot.de/en-us/article/5/asp.net/how-to-use-web.config-transforms-to-replace-appsettings-and-connectionstrings

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读