我有 C# 代码,我想在 WinForms 应用程序和 ASP.NET 网站中使用。虽然每个数据库连接字符串都不同,所以我希望能够找出它在哪个平台上运行并适本地设置连接字符串。有没有简单/推荐的方法来做到这一点?
这应该在 WinForms 和 ASP.NET 上编译,所以不需要 System.Windows
或 System.Web
引用。
最佳答案
框架已经为您处理了这个问题。使用 System.Configuration.ConfigurationManager.AppSettings
或 ConfigurationManager.ConnectionStrings
读取您的连接字符串,它们将从 WinForms 中的 App.config 读取,并且来自 ASP.NET 中的 Web.config。您可以在两个配置文件中放置不同的值。
至于更一般的问题 - 您可以检查 System.Web.HttpContext.Current
,如果它不是 null
,您肯定是在 ASP.NET 中运行。如果它是 null
,则您可能不在 ASP.NET 中,但可能只是不在请求中。您还可以尝试检查 System.Web.HttpRuntime
的一些属性。
编辑:如果您不想添加对 System.Web.dll 的引用,您可以通过反射调用上面的代码:首先调用 Type.GetType("System.Web. HttpContex")
如果它返回 null
那么你肯定不在 ASP.NET 中。如果它返回一个值,您可以继续获取其上的 Current
静态属性。
关于c# - 检测在 C# 中运行的平台代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4393731/