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"))
            {

            }

좋은 웹페이지 즐겨찾기