Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
286 views
in Technique[技术] by (71.8m points)

.net - Determine whether running in ASP.NET or WinForms/console without System.Web

From a class library, I need to determine at run-time whether I'm running in an ASP.NET app or a WinForms/console app. There have been several other questions asked on the subject, but all of those solutions require adding a reference to System.Web. If at all possible, when running my console and WinForms apps, I don't want to load the System.Web assembly into memory just for one line of code out of thousands.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Use System.Diagnostics.Process.GetCurrentProcess().ProcessName

If you're running ASP.NET then the assembly will be named thusly:

  • If you are running IIS 6.0 or IIS 7.0, the name is w3wp.exe.

  • If you are running an earlier version of IIS, the name is aspnet_wp.exe.

Another Idea: How about testing the process/app domain for the presence of the System.Web.dll with the AppDomain.CurrentDomain.GetAssemblies() API?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...