c# - 检测在 C# 中运行的平台代码?

标签 c# asp.net winforms cross-platform

我有 C# 代码,我想在 WinForms 应用程序和 ASP.NET 网站中使用。虽然每个数据库连接字符串都不同,所以我希望能够找出它在哪个平台上运行并适本地设置连接字符串。有没有简单/推荐的方法来做到这一点?

这应该在 WinForms 和 ASP.NET 上编译,所以不需要 System.WindowsSystem.Web 引用。

最佳答案

框架已经为您处理了这个问题。使用 System.Configuration.ConfigurationManager.AppSettingsConfigurationManager.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/

相关文章:

c# - 获取客户端和服务器之间的时区差异

c# - 单击注销按钮时如何关闭当前表单并关闭上一个表单

c# - 在c#中删除多种文件类型的文件

c# - 启动后将焦点设置到winform

c# - 完美的散列函数能保证不发生冲突吗?

c# - 关于 NullReferenceException 的困惑

c# - 如何使用 HTTP GetAsync 方法序列化-反序列化对象?

asp.net - 如何在我的 ASP.NET 项目中使用 JavaScript 文件?

c# - 当表单的类变得太大时怎么办?

c# - 将异步方法的执行推送到线程池线程