有谁知道在不同的构build/部署环境之间pipe理Web.Config文件的好工具/实用程序吗? 例如,我有一个开发中的WCF项目,我不想启用SSL,但是我希望在生产中启用它。 我想要不同的日志logging设置,不同的数据库连接string,不同的error handling,不同的文件path…甚至一些不同的统一框架绑定(unit testing,而不是真正的对象部署)。 保持Web.Config单独副本是一个痛苦,因为添加新的Web服务意味着编辑多个文件并保持同步。 我也注意到,如果你手工过多地使用Web.Config ,如果你尝试使用“add item”向导来为WCF添加一个新的Web服务,Visual Studio将会窒息,因为它必须修改Web.Config来添加端点,并且不能再parsing它。 所以我必须小心不要使现有的Web.Config无效。 我也想过使用一些正则expression式来replace,只是在预编译命令中build立一个新的Web.Config 。 这似乎是迄今为止最好的select… 任何其他的想法? 看起来这应该是一个非常普遍的问题,因为Web.Config在开发和生产部署之间可能永远不会相同。 更新: 我决定编写一个快速的控制台应用程序,将所有的XML文件在一个给定的目录,并合并成一个,只包括基于名称的某些文件。 所以我可以在一个目录中做出: WebConfig_All <configuration> <configSections> … </configSections> <system.web> … </system.web> </configuration> connectionStrings_Debug <configuration> <connectionStrings> <add name="connstr" connectionString="…dev…" /> </connectionStrings> </configuration> connectionStrings_Release <configuration> <connectionStrings> <add name="connstr" connectionString="…prod…" /> </connectionStrings> </configuration> 然后运行我的命令行工具,并传入configuration(debugging,释放,自定义…),它将合并所有以_All" or _ <configuration>`结尾的文件。 所以现在我在单个WebConfig_All文件中有80%的Web.Config,而每个构buildconfiguration中有20%的自定义内容在不同的文件中。 我可以运行我的命令行工具作为预生成任务在VisualStudio中,或从NAnt,或任何我想要的… 我也使我的XML合并逻辑足够好处理像这样的东西: <x> <ya="1"> […]
我想做这个: string template = "Hello @Model.Name! Welcome to Razor!"; string result = Razor.Parse(template, new { Name = "World" }); 看起来http://razorengine.codeplex.com是完美的,只有一岁了。 编辑:原来,RazorEngine已经转移到GitHub和几个月前提交: https : //github.com/Antaris/RazorEngine 我注意到,服务堆栈有一些剃刀自我托pipe,但有一个很长的页面在这里http://razor.servicestack.net没有“你好,你可以从控制台完全做到这一点。 在控制台应用程序中从ASP.NET Razor模板生成HTML的最佳解决scheme是什么?
每隔一段时间(每天一次),我们在ASP.NET 3.5应用程序的日志中看到以下types的错误 无效的视图状态 回发或callback参数无效 这些事情是否会随时随地通过ASP.NET应用程序发生? 有人会build议我们花费大量的时间来尝试诊断是什么原因造成的问题?
我有一个ASP MVC应用程序与一些看似简单的代码来保存和检索cookie,但由于某些原因,他们不会坚持。 控制器中的代码是: if (System.Web.HttpContext.Current.Response.Cookies["CountryPreference"] == null) { HttpCookie cookie = new HttpCookie("CountryPreference"); cookie.Value = country; cookie.Expires = DateTime.Now.AddYears(1); System.Web.HttpContext.Current.Response.Cookies.Add(cookie); } 并再次加载它: if (System.Web.HttpContext.Current.Request.Cookies["CountryPreference"] != null) { System.Web.HttpContext.Current.Request.Cookies["CountryPreference"].Expires = DateTime.Now.AddYears(1); data.Country = System.Web.HttpContext.Current.Request.Cookies["CountryPreference"].Value; } 由于某些原因,Cookie始终为空?
我正在寻找一个备忘单,这将允许我显示一个HTMLdevise器的标准HTML标签等效的asp.net控件。 作为一个例子,<asp:Panel>将呈现为HTML <div>,而<asp:Label>将呈现为HTML <span>。 我一直在使用这个Google无效。 有人可以发布一个好的备忘单的链接,这样这个项目的devise者就可以更清楚地理解aspx页面上的标记。 为了清楚起见,我想要一个链接到主要的ASP.NET控件列表,并描述它们如何与标准的HTML相关联。 如果这是PDF格式或易于阅读和打印的网页,那将是非常好的。 我的理由是,我们有一个非常熟悉HTML的PHP开发人员来开发我们的项目,我觉得如果可以的话,更好地理解标准的ASP.NET服务器控件将是有用的递给他这样的“备忘单”。 我主要是指.NET 2.0框架,但我们也在3.0 / 3.5下工作。
说我有一个枚举, public enum Colours { Red, Blue } 我可以看到parsing它们的唯一方法就是: string colour = "Green"; var col = (Colours)Enum.Parse(typeOf(Colours),colour); 这将抛出System.ArgumentException,因为“绿色”不是“ Colours枚举的成员。 现在我真的讨厌try / catch中的包装代码,有没有更好的方法来做到这一点,不涉及我遍历每个Colours枚举,并做一个string与colour比较?
我们如何在asp.net中使用global.asax? 那是什么?
我有这个代码: DateTime.Now.DayOfWeek.ToString() 那给我一个星期的英文名字,我想有德文版本,这里怎么加CultureInfo来得到德文的那个星期的名字?
简单的问题,不知道有一个简单的答案! 所以这是代码:(我已经简化了很多,以便于阅读) <asp:Repeater runat="server> <ItemTemplate> <asp:Repeater runat="server"> <HeaderTemplate> <h1>My header here for: <%# OuterContainer.DataItem.MyItemName %> </h1> </HeaderTemplate> <ItemTemplate> My items code here </ItemTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater> 如何在HeaderTemplate中 – 我可以访问父Repeater中的DataItem?
我想要使用我的网站的客户的公共IP地址。 下面的代码显示局域网中的本地IP,但是我想要客户端的公共IP。 //get mac address NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); String sMacAddress = string.Empty; foreach (NetworkInterface adapter in nics) { if (sMacAddress == String.Empty)// only return MAC Address from first card { IPInterfaceProperties properties = adapter.GetIPProperties(); sMacAddress = adapter.GetPhysicalAddress().ToString(); } } // To Get IP Address string IPHost = Dns.GetHostName(); string IP = Dns.GetHostByName(IPHost).AddressList[0].ToString(); 输出: IP地址:192.168.1.7 […]