如何判断.NET代码是否在ASP.NET进程中运行?我有一个将在ASP.NET和独立程序下执行的通用类的实例。此代码对正在运行的进程敏感-也就是说,如果在ASP.NET下运行,则不应调用certin方法。如何确定代码是否在ASP.NET进程中执行?我目前使用的解决方案在下面回答。我希望有人会评论为什么要实施和/或提出更好的方法!我只能假设至少有人看过这个问题并说“多么白痴,ASP.NET代码就是.NET代码”。如果您使用异步方法,HttpContext.Current在ASP.NET中也可以为空,因为异步任务发生在不共享原始线程的HttpContext的新线程中。这可能是也可能不是您想要的,但如果不是,那么我相信HttpRuntime.AppDomainAppId在ASP.NET进程的任何地方都是非空的,而在其他地方是空的。试试这个:使用System.Web.Hosting;//...if(HostingEnvironment.IsHosted){//你在ASP.NET中}else{//你在独立应用程序中}为我工作!有关详细信息,请参阅HostingEnvironment.IsHosted。我认为你真正想做的是重新考虑你的设计。更好的方法是根据应用程序的启动方式,使用工厂类生成所需类的不同版本(旨在实现接口,以便它们可以互换使用)。这将本地化代码以在一个地方检测基于Web和非基于Web的使用,而不是将其分散在代码中。公共接口IDoFunctions{voidDoSomething();}publicstaticclassFunctionFactory{publicstaticIDoFunctionsGetFunctionInterface(){if(HttpContext.Current!=null){returnnewWebFunctionInterface();}else{returnnewNonWebFunctionInterface()};}}publicIDoFunctionsWebFunctionInterface{publicvoidDoSomething(){...以网络方式做事...}}publicIDoFunctionsNonWebFunctionInterface{publicvoidDoSomething(){...以非网络方式做事...}}使用系统诊断;if(Process.GetCurrentProcess().ProcessName=="w3wp")//ASP.NET这是我对这个问题的回答。首先,确保您的项目引用System.Web并且您的代码文件是“UsingSystem.Web;”。以上就是C#学习教程:如何判断.NET代码是否在ASP.NET进程中运行?所有分享的内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——publicclassSomeClass{publicboolRunningUnderAspNet{get;私有集;}publicSomeClass()////constructor//{try{RunningUnderAspNet=null!=HttpContext.Current;}catch{RunningUnderAspNet=false;}}}IfHttpContextIsNothingOrElseHttpContext.CurrentIsNothingThen'Nothostedbywebserver'EndIf如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
