C#에서 AppDomai.CurrentDomain.BaseDirectory 및 Application.StartupPath의 차이점
13057 단어 C#Silverlight
string path = "";
// ( ) 。 :E:\ \Test
path = Environment.CurrentDirectory;
// 。 :E:\ \Test\
path = System.AppDomain.CurrentDomain.BaseDirectory;
// ( ) 。 :E:\ \Test
path = System.Environment.CurrentDirectory ;
// , , 。 :E:\ \Test
path = System.IO.Directory.GetCurrentDirectory();
// 。 :E:\ \Test\
path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
// Log :E:\ \Test\Log
path = System.Web.HttpContext.Current.Server.MapPath("~/Log");
// 。
System.AppDomain.CurrentDomain.BaseDirectory
// 。
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
// ( ) 。
System.Environment.CurrentDirectory
// 。
System.IO.Directory.GetCurrentDirectory()
// 。
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
// 。
System.Windows.Forms.Application.StartupPath
//
System.Windows.Forms.Application.ExecutablePath
C# WinForm AppDomain.CurrentDomain.BaseDirectory Application.StartupPath :
private void Frm_Server_Load(object sender, EventArgs e)
{
MessageBox.Show(AppDomain.CurrentDomain.BaseDirectory);
MessageBox.Show(Application.StartupPath );
}
:
1. AppDomain.CurrentDomain.BaseDirectory : D:\mycode\
Application.StartupPath : D:\mycode
2. Application.StartupPath WinForm , AppDomain.CurrentDomain.BaseDirectory WinForm , DLL .
3. HttpContext.Current.Request.Url.Host.ToString() :http://locahost.XXXX.XXX
HttpContext.Current.Server.MapPath();
System.Web.HttpContext.Current.Request.PhysicalApplicationPath
//Silverlight :
var _xapUri = Application.Current.Host.Source;
var _webUri = new Uri(_xapUri, "../");
나의 asp.net에서 IIS에 만들어졌습니다. 서버에 유일하게 도착했을 때 이 이름을 찾으려는 웹 응용 프로그램을 제공합니다.나는 흥미가 없지만, 실제 이름은 IIS의 웹 사이트의 도메인 이름이다.
나는 이 일을 믿음직스럽게 할 수 있는 IIS6와 7이 필요하다.
IIS, 도메인 이름, 가상 디렉터리가 아닌 경로에서 내가 지정한 이름을 알아야 한다.
해결 방법1:
System.Web.Hosting.HostingEnvironment.ApplicationHost.GetSiteName();
해결 방법2:
여기는 게시물 관련 검색 사이트 id입니다.
다음과 같은 몇 가지 코드가 제공될 수 있습니다.
using System.DirectoryServices;
using System;
public class IISAdmin
{
public static void GetWebsiteID(string websiteName)
{
DirectoryEntry w3svc = new DirectoryEntry("IIS://localhost/w3svc");
foreach(DirectoryEntry de in w3svc.Children)
{
if(de.SchemaClassName == "IIsWebServer" && de.Properties["ServerComment"][0].ToString() == websiteName)
{
Console.Write(de.Name);
}
}
}
public static void Main()
{
GetWebsiteID("Default Web Site");
}
}
이것은 원본 게시물의 링크입니다.
IIS7 호환 구성 요소를 설치하는 경우 IIS7에 주력할지 확실하지 않습니다.
해결 방법 3:
ServerManager(Microsoft.Web.Administration)에서 제공하는 읽기 및 쓰기 액세스를 찾고 있습니다. IIS 7.0 구성 시스템입니다.
Microsoft에 대한 순환 액세스Web.Administration.SiteCollection, 웹 사이트에서 사용하는 사이트 대상에 대한 인용을 얻고 이름 속성의 값을 읽습니다.
// Snippet
using (ServerManager serverManager = new ServerManager()) {
var sites = serverManager.Sites;
foreach (Site site in sites) {
Console.WriteLine(site.Name); // This will return the WebSite name
}
LINQ를 사용하여 ServerManager를 질의할 수도 있습니다.Sites 컬렉션(아래 예제 참조)
// Start all stopped WebSites using the power of Linq :)
var sites = (from site in serverManager.Sites
where site.State == ObjectState.Stopped
orderby site.Name
select site);
foreach (Site site in sites) {
site.Start();
}
참고: Microsoft.Web.Administration은 IIS7에서만 작동합니다.
IIS6, 당신은 ADSI와 WMI를 사용하여 이렇게 할 수 있지만, 나는 당신이 WMI ADSI보다 빠르기를 건의합니다.WMI를 사용하는 경우 WMI 코드 작성자 1.0(무료/고급 Microsoft)을 살펴보겠습니다.이것은 당신을 위해 생성된 코드입니다.
논밭
해결 방법 4:
이 기사는 IIS 정보를 검색하고 웹 사이트/가상 디렉터리를 만들 수 있는 방법을 보여 줍니다.
C# 응용 프로그램 풀을 프로그래밍하는 웹 사이트 만들기
해결 방법 5:
먼저 ServerManager를 만들어야 합니다.원격 서버에 연결할 때 OpenRemote("serverName")
그것의 기본적인 방법은 이렇다
using (ServerManager srvMgr = ServerManager.OpenRemote("serverName"))
{
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.