我们有这样一种情况:一群用户(我们不知道哪些用户或多少用户,可能有几十个)已经获得了我们的ASP.NET应用程序的开发环境URL,并认为它是生产环境。
在过去,我们只是在dev的默认页面中进行重定向,以便将它们发送到生产环境,但现在我们需要使用我们的dev环境进行开发。问题是,如果我们取消了重定向,最终会有用户打电话抱怨“数据错误”或“我的更改正在被覆盖”等。我们向那些我们知道正确URL的用户发送了正确的URL,并指示他们使用它,但其中一些人却故态复萌(可能是因为他们有书签,他们认为不会改变)。
我想要做的是有一些明确的视觉变化,这些变化会跳出来,他们不能错过,告诉他们,他们没有在正确的应用程序中。我的偏好是在开发时将屏幕变成亮绿色,并有一个在生产中不可见的链接,这将把它们带到生产中。
我的组长在后退。首先,他说只要在浏览器中查看URL就足够了(是的,对,这样就行了),然后他说我们不能改变颜色,因为我们使用的是样式表,所以基于配置文件(我们已经有了)中的应用程序设置来覆盖它们将是一项太多的工作。
我对web开发的了解还不够多(我的背景是Winforms),但我希望有人能给我指出正确的方向,弄清楚如何让表单改变颜色,而不管css文件中的值是什么。或者有另一个建议,非常关注可以通过配置设置控制的可视更改。
发布于 2018-09-04 07:38:49
我假设您在这里使用的是ASP.Net表单,而不是ASP.Net MVC Razor视图。
在配置文件中,设置应用程序设置,该设置说明应用程序在其中运行的环境:
<appSettings>
<add key="Environment" value="DEV" />
</appSettings>
然后,您可以使用配置转换来根据环境更改此设置的值。请参阅以下链接了解这些功能的工作原理:https://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx
假设您希望应用程序中每个页面的背景颜色根据应用程序运行的环境而改变,那么在您的超文本标记语言中(我们在.Master页面中提供了这一点),添加一个对助手函数的服务器端调用,该函数将根据应用程序运行的环境设置Class:
<body class="<%= Helpers.GetDeploymentEnvironment()%>">
您还需要链接包含特定于环境的样式的Environment.css文件:
<head>
<link href="~/css/Environment.css" rel="stylesheet" type="text/css" />
</head>
以下是从配置中检索环境设置的助手函数的示例(这是在VB.Net中,如果您需要C#版本,请在下面注释,我将更新答案):
Public Shared Function GetDeploymentEnvironment() As String
Dim environmentSetting = GetAppSetting("Environment")
Return environmentSetting
End Function
Public Shared Function GetAppSetting(ByVal strConfigName As String) As String
If ConfigurationManager.AppSettings(strConfigName) IsNot Nothing Then
Return ConfigurationManager.AppSettings(strConfigName).ToString()
End If
Return String.Empty
End Function
包含每个环境的样式的Environment.css文件
/* CSS Styling for deployment environment */
/* No background-color for PROD */
body.LOCAL {
background-color: #f6f66c; /* Yellow Local build */
}
body.DEV {
background-color: #ffe4e1; /* Misty Rose DEV */
}
body.TEST {
background-color: #e6e6fa; /* Lavender TEST */
}
最后,如果您希望链接出现在应用程序的所有页面中的某处,但如果应用程序在生产环境中运行,则使用服务器端超链接,并根据helper函数的返回值在Page_Load方法中设置其可见性:
在您的.aspx中:
<body class="<%= Helpers.GetDeploymentEnvironment()%>">
<asp:HyperLink ID="hypProduction" NavigateUrl="http://your.prod.server/page.aspx" runat="server"></asp:HyperLink>
</body>
在你的代码隐藏中:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
hypProduction.Visible = Helpers.GetDeploymentEnvironment() = "PROD"
End Sub
但我建议将"PROD“放在某个Constants.vb文件中,而不是依赖于”魔法字符串“。
https://stackoverflow.com/questions/32084529
复制相似问题