gpt4 book ai didi

asp.net - Web.config 构建与发布转换不起作用

转载 作者:IT老高 更新时间:2023-10-28 11:10:29 27 4
gpt4 key购买 nike

我有一个 ASP.NET Web 应用程序项目,它通过 Entity Framework 连接到远程数据库。在调试期间(例如在我的本地计算机上运行项目),数据库的 IP 地址与发布期间不同(例如在将项目上传到我的网络服务器并从浏览器运行之后)。到目前为止,我一直手动更改 Web.config 文件中的数据库连接字符串以在两者之间切换(基本上我必须连接字符串,一个名为“Debug”,一个名为“Release”,我只是在部署时交换名称)。

现在我刚刚注意到应该可以通过 Web.config Transformation Syntax 让这种情况自动发生。您将修改后的连接字符串放在 Web.Release.config 版本中,然后当 DLL 在 Release 配置下构建时,它应该使用它。

但它似乎对我不起作用......

这是我的常规 Web.config 文件的相关部分(其中包含本地使用的 Debug 连接字符串):

<?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 处于 Release模式,则应将“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,我可以访问数据库。然后我通过配置管理器将构建配置更改为发布。解决方案中的所有项目都设置为发布配置。然后我构建解决方案(仅通过构建,甚至通过完整的重建(例如清理、重建))。我将新建的 DLL 以及 Web.config 和 Web.Release.config 文件上传到网络服务器,当我尝试访问我无法访问的数据库时,它仍在尝试通过调试 IP 地址访问数据库因此找不到它...

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

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

最佳答案

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 -> 发布)发布到您的本地文件系统并从那里复制文件,或者使用您选择的其他部署方法。

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

关于asp.net - Web.config 构建与发布转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14415614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com