gpt4 book ai didi

c# - 我可以用 "HostingEnvironment"来判断是Web还是Win

转载 作者:太空狗 更新时间:2023-10-30 00:05:38 25 4
gpt4 key购买 nike

在我的库中,我将 HostingEnvironment.MapPath 用于我的 Web 应用程序。但我需要从 Windows 窗体和 Windows 服务调用相同的函数。

在 Windows 应用程序中 HostingEnvironment.ApplicationID 为空,在 Web 应用程序中 HostingEnvironment.ApplicationID 类似于“99xxx999”。

我可以使用“HostingEnvironment”来确定它是 Web 还是 Win?

用这个安全吗?

if (HostingEnvironment.ApplicationID == null)
{
//called from windows application
}
else
{
//called from web application
}

最佳答案

执行此操作的更标准方法是使用 HttpContext.Current 方法:

if (HttpContext.Current == null)
{
// called from windows application
}
else
{
// called from web application
}

当然,在应用程序的非 HTTP 相关层中使用 HttpContext 相关的东西是一种设计味道。它不仅闻起来 => 还很臭。

一个更标准的方法是让你的代码直接作为参数传递文件名作为参数。当从 Web 应用程序中调用时,您将传递 Server.MapPath("~/foo.txt"),当您从 Windows 应用程序中调用它时,您将直接传递相对于当前文件的文件名可执行文件。

这样您的代码就不需要依赖任何 HTTP 特定的东西,并且可以在任何平台上愉快地重用。调用者有责任将您的代码需要处理的文件名传递给它。确定此文件名的方式是特定于平台的。不是您的代码责任。不要混淆职责。

关于c# - 我可以用 "HostingEnvironment"来判断是Web还是Win,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9872259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com