每次为单击一次的应用程序发布新更新时,app.config文件中的变量都将被销毁
<userSettings>
<app.My.MySettings>
<setting name="Email" serializeAs="String">
<value />
</setting>
<setting name="UserName" serializeAs="String">
<value />
</setting>
</app.My.MySettings>
</userSettings>
Run Code Online (Sandbox Code Playgroud)
我怎么能防止这种情况?
有没有办法从以前的应用程序版本中获取变量?
我只是在学习围绕WCF的绳索.我打算做的是使用NetTcpBinding在客户端和服务器之间打开双工通道,并使其无限期保持打开状态,以便服务器可以向客户端发起请求.
然后我偶然发现了Jesse Ezell撰写的这篇博客,这似乎表明保持渠道无限期开放是一件坏事,因为你无法发现错误,这会造成各种不稳定因素.
那是对的吗?如果我使用NetTcpBinding并在关系的任何一侧保持对开放通道的引用,那么如果通信失败会发生什么?我如何捕捉失败事件?还有其他什么问题?您使用的.NET框架有什么区别吗?(我在4.0.)
这个问题的标题可能有点笨拙,但这是情况:
我在我的服务器上部署了一个.NET Web项目.它仍处于测试阶段,所以发布了大量的释放和重新发布.
我还在同一个VS解决方案(称为"admin.exe")中编写了一个C#可执行文件,该解决方案在服务器后台运行,定期执行某些业务规则完整性检查并对数据库中的警告表进行适当的插入.
问题是:部署此应用程序的最佳方式是什么,以便每当我发布新版本时它都会更新?它应该在不同版本之间一直运行,所以理想情况下我想要某种设置,即shutdown-deploy-startup过程涉及尽可能少的步骤.
谢谢!
到目前为止给出的答案是有用和有趣的,但没有为我提供一个清晰,简洁和优雅的解决方案.请不要认为我对部署项目有广泛的了解,因为我没有.Bounty会找到能够提供以下解决方案的人:
谢谢您的帮助!
次要编辑 - 澄清
我认为到目前为止提供的很多解决方案都高估了问题的复杂性,所以让我澄清一下:所有要部署的东西,只需要部署在一台计算机上,也很高兴Visual Studio可以提供所有源代码.我只需要(1)将网站发布到web文件夹,(2)关闭,重新安装并重新启动同一服务器上的admin.exe.有没有一个简单的方法一步到位?是否可以使用VS部署项目完成?
我有2个Linq2Sql类:Parent和Child.我想做一些事情,比如删除父母的所有孩子,或更新所有子记录.在SQL中我会写:
delete Child where ParentID = @p
Run Code Online (Sandbox Code Playgroud)
要么
update Child set Val = Val+1 where ParentID = @p
Run Code Online (Sandbox Code Playgroud)
我可以在Linq中以蛮力的方式在Parent课堂内这样做:
Children.ToList().ForEach(c => c.DeleteOnSubmit()); // DeleteOnSubmit is my own method
Run Code Online (Sandbox Code Playgroud)
和
Children.ToList().ForEach(c => c.Val++);
Run Code Online (Sandbox Code Playgroud)
但鉴于Linq对ForEach循环的固有性能损失,这似乎是一种非常低效的方法.是否有某种方法可以实现所需的结束,只会触发一个查询?
我有一个ASP.NET网站项目,我将在我的Win2k8 R2服务器上发布到IIS.它有一个名为的默认页面login.aspx.我在已发布的网站上进行了设置.
麻烦的是,每次我发布新版本的网站时,该login.aspx条目都会从IIS网站的"默认文档"设置中删除.这非常烦人.如何在不删除默认页面的情况下从Visual Studio发布我的网站?
我从遗留应用程序继承了一堆dBase(.dbf)文件,我需要将数据导入MS SQL或MS Access.我知道这些程序内置了"导入"功能,但dBase文件受密码保护,这里的人似乎都不知道.
有人知道密码或破解密码吗?
(编辑:添加了C#tag bc,这是我可能用于任何程序化解决方案的语言)
赏金奖励:我还没有一个很好的解决方案,但是只有2个小时才能获得赏金,所以我想我应该把它奖励给目前为止最有用的答案.在这方面,我认为75美元的付费解决方案可能是最节省时间和最节能的,即使它不能让我自己解决它的智力满足感!:)
我将在此期间留下"未答复"的问题,直到我看到任何解决方案是否真的有效......
我在内存中有一个LinqToSql对象,它在数据库的字段值应该在对象的生命周期内发生变化.因此,我需要定期检查一切是否仍然同步.我原以为能够这样做:
myDataContext.Refresh(RefreshMode.KeepCurrentValues, myObj);
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这似乎没有效果; myObj即使DB值已更改,值仍保持不变. 有关此方法的MSDN文档非常缺乏.谁能告诉我这里缺少什么?
我正在使用InstallShield 2009为C#程序创建一个安装包,该程序将部署在许多客户端站点上,每个站点都有数百个工作站.当我们发布一个补丁时,我根本无法去每个工作站手动升级,而且用户和婆罗洲野人一样精通计算机,所以我当然不会依赖每个操作员来处理他自己的升级.
Microsoft使用ClickOnce非常好地处理这个要求,但由于我的安装非常简单,并且已经使用InstallScript编写,我想将自动升级功能添加到我的InstallShield项目......如果,确实这是可能的.
遗憾的是,我在关于这个主题的帮助文档中找不到任何内容.也许我在寻找错误的关键词.
InstallShield是否支持自动升级?如果是这样,请提供其在线文档的链接,其中说明了如何操作.
谢谢!
我有一个在IIS7下运行的EF5 ASP.NET MVC 3(Razor)网站.现在我希望能够根据URL的子域将连接字符串更改为MSSQL数据库,例如foo.mydomain.com应该连接到我的"Foo"数据库,并且bar.mydomain.com应该连接到"Bar"数据库.
显然,DNS记录的设置使它们都指向同一个网站.
实现这一目标的最有效方法是什么?
我有一个Web API服务,我正在部署到我的各种环境(使用Octopus Deploy).它应该在启动时执行各种任务,例如运行Entity Framework Code First所需的任何迁移脚本,以及Hangfire管理的一些后台任务.麻烦的是,网站只有在第一次有人打电话时才会醒来.我希望它在我部署后立即运行.我可以通过将Web浏览器指向API的主页来手动完成,但这需要我记住这样做,如果我要部署到多个触角,那么这是一个主要的PITA.
如何在部署后立即强制网站自动启动?