Makale numarası: 910441 - Son Gözden Geçirme: 11 Mayıs 2007 Cuma - Gözden geçirme: 2.7

Sanal yol sağlayıcısı dinamik olarak yüklemek için nasıl kullanılacağı ve sanal yolların ASP.NET 2. 0'da derleme içeriği

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
ASP.NET Destek Sesi Sütunu

Sanal yol sağlayıcısı dinamik olarak yüklemek için nasıl kullanılacağı ve sanal yolların ASP.NET 2. 0'da derleme içeriği

Bu sütun için kendi gereksinimlerinize göre özelleştirmenin sizi ilgilendiren konular hakkındaki fikirlerinizi göndermeye davet etmek isteriz ve gelecekte Knowledge Base makaleleri ve Destek Sesi sütunu görmek istediğiniz sorunlar giderilmiştir. Kendi fikirleri ve Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) formunu kullanarak geri besleme gönderebilirsiniz. Formun alt kısmındaki bu sütunun. bağlantı da orada

Bu Sayfada

Hepsini aç | Hepsini kapa

Giriş

Var sayılma ve Hoş Geldiniz arka! Benim Parag Agarwal, Microsoft'ta bir destek mühendisine adıdır. Bu ay size Microsoft ASP.NET 2. 0'daki sanal yol sağlayıcısı tartışmak için kullanacağınız.

GENEL BAKIŞ

Bu ay nasıl içerik ve derleme, ASP.NET 2.0 dosyaları sanal bir erişim sağlayarak, ASP.NET'in genişletileceğini tartışılacaktır. Bu özellik, uygulamalar, içerik yerine fiziksel dosya sistemindeki bir veritabanında depolanır, Microsoft SharePoint Portal Server, benzer oluşturmak için kullanılabilir. Bu makalede, istenen Web form sayfası içeriğini bir Microsoft SQL Server veritabanında depolandığı bir örnek oluşturur.

Sanal yol sağlayıcısı

Bir sanal yol sağlayıcısı ile ASP.NET derleme sistemine sanal içerik için biz genişletebilirsiniz bir düzenek sağlar. Örneğin, bir sanal yol sağlayıcısı, dosya sistemi dışındaki konumlardan içerik kaynağı için bir yol sağlar. Sanal içerik sağlamak isteyen geliştiriciler, aşağıdaki görevleri gerçekleştirmelisiniz:
  • VirtualPathProvider bir sınıf oluşturmak ve dosya ve klasör istekleri işlemek için tüm gerekli yöntemleri uygulayın.
  • <a1>Kayıt</a1> ortam barındıran ASP.NET için sanal yol sağlayıcısı biliyor burada içeriği gelen hizmet.
  • Içerik akışı VirtualFile ve sanal dizin nesneleri oluşturma.
VirtualPathProvider sınıfı hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx (http://msdn2.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx)

Hangi içeriğin sanallaştırılmış?

Browseable, ASPX, <a1>ana sayfa</a1>, ASCX ve temaları sanallaştırılmış yalnızca maddeler türleridir.

Uygulama çağrıları AppInitialize statik yöntem ve Global.asax dosyası içinde tanımlanan olayları yapıldıktan sonra başlatıldı. Bu yöntem çağrıları VirtualPathProvider sınıfı kaydedilebilir yalnızca iki yerlerdir.

Derleme App_Code ve App_Data klasörleri gibi üst düzey öğelerin yaşam döngüsü için kaydetmek istediğiniz sağlayıcıyı uygulamanın içinde herhangi bir noktada etkilenip etkilenmedikleri edemiyor.

Varsayılan olmayan göz içeriği sanallaştırmak için <a0></a0>, size BuildProvider sınıf eşlemeniz gerekir. BuildProvider sınıfı nasıl ASP.NET oluşturma ve ortam kullandığı BuildProvider sınıfı, farklı dosya türleri için kaynak kodu hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/system.web.compilation.buildprovider.aspx (http://msdn2.microsoft.com/en-us/library/system.web.compilation.buildprovider.aspx)

Derleme Modeli

Sanal yol sağlayıcısı için size bir örnek oluşturmadan önce size ASP.NET 2.0 derleme modelindeki başlıca Bileşenleri'ne genel bakış aracılığıyla gelecektir. Bu genel bakış, bize nasıl içerik açmasını ve bir Web sayfasına gözatmak için Microsoft Visual Studio'da Web sitesi oluşturma ASP.NET'in yapı sistemi tarafından derlenen anlamanıza yardımcı olur.

ClientBuildManager sınıfı

Sistem birleştirmeler oluşturma, kaynak kodu oluşturma ve ASP.NET ile etkileşim tarafından pre-compilation gerçekleştiren Apı'ler oluşturmak ClientBuildManager sınıf sunar. ClientBuildManager sınıf, yapı sistemi dışında Microsoft ınternet ınformation Services (IIS) erişim sağlar. Visual Studio 2005, ClientBuildManager sınıf'ı kullanarak, ıntellisense deyim tamamlama ve gerçek zamanlı hata raporlaması gibi harika özellikler sağlar. ClientBuildManager sınıfı, dosya veya sanal ve fiziksel yolları da sağlar. Daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/system.web.compilation.clientbuildmanager.aspx (http://msdn2.microsoft.com/en-us/library/system.web.compilation.clientbuildmanager.aspx)

BuildManager sınıfı

BuildManager sınıfı derlemeler ve uygulama sayfalarında derleme işlemi yönetir. Daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/system.web.compilation.buildmanager.aspx (http://msdn2.microsoft.com/en-us/library/system.web.compilation.buildmanager.aspx)

BuildProvider sınıfı

BuildProvider sınıf, belirli bir dosyayı ayrıştırmak ve karşılık gelen kod dosyası oluşturmak için işlevler sağlar. Daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/system.web.compilation.buildprovider.aspx (http://msdn2.microsoft.com/en-us/library/system.web.compilation.buildprovider.aspx)

AssemblyBuilder sınıfı

AssemblyBuilder sınıfı, bir Dinamik derleme ile tüm derleme bağımlılıklar listesini gösterir. Bu sınıf, kaynak kodu veya bir derleme işlemi sırasında derleme sağlayıcısı tarafından sağlanan CodeCompileUnit nesnesi bekliyor. Daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/system.reflection.emit.assemblybuilder(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.reflection.emit.assemblybuilder(vs.71).aspx)

Bir veritabanından geliyor sanal içerik için sanal yol Sağlayıcısı'nı genişletme

Sanal yol sağlayıcısı ve derleme modeli ile ilgili genel bir anlayış bölümlerimiz artık, biz küçük bir SharePoint Portal oluşturabilirsiniz Hizmetleri benzeri olmayan dosya tabanlı içeriğine erişim sağlayan uygulama.

Not Örnek uygulama oluşturma başlamadan önce veritabanı yapısı ve örnek kullanılan Web sitesi hiyerarşi konunda us arayın:

Veritabanında VirtualFileSystem adlı tek bir tablo yok. Bu tablo, aşağıdakine benzer:
Bu resmi kapatBu resmi aç
The VirtualFileSystem
		  table

Web sitesi hiyerarşi içinde Visual Studio, aşağıdakine benzer:
Bu resmi kapatBu resmi aç
The hierarchy inside Visual
		  Studio


Notları
  • App_Code klasöründe bir sanal yol sağlayıcısı VirtualPathProvider sınıfı, sanal dizin sınıfı, VirtualFile sınıfı ve bir yardımcı sınıf olarak uygulamak için gerekli olan tüm sınıflarını içerir.
  • SharePointDir klasörü, bir sanal dizini gösterir. Bu sanal dizinin içeriğini veritabanında depolanır. Bu klasör içindeki bir sayfa için herhangi bir istek ASP.NET çalışma zamanı tarafından sanal bir dosya için bir istek olarak değerlendirilir.
  • Biz CRUD gerçekleştirebileceğiniz bir kullanıcı arabirimi AdminstrationPage.aspx sayfayı görüntüler GridView denetiminin yardımıyla sanal içeriği (oluşturma, okuma, güncelleştirme ve silme) işlemleri. AdminstrationPage.aspx sayfa aşağıdakine benzer:
Bu resmi kapatBu resmi aç
A
		  user interface where we can perform CRUD operations

Us konunda örnek oluşturmaya başlayın.

Bunu yapmak için şu adımları izleyin:
  1. Visual Studio 2005'i başlatın.
  2. Tam bir sıradüzeni ve önceki görüntüde görünen dosyaları içeren bir Web sitesi oluşturur.
  3. SharePointDirectory.cs kaynak dosyayı açın.
  4. Aşağıdaki ad SharePointDirectory.cs dosyasında bulunan doğrulayın:
    using System;
    using System.Collections;
    using System.Data;
    using System.Security.Permissions;
    using System.Web;
    using System.Web.Hosting;
    
  5. SharePointProvider sınıf bildirmek ve VirtualPathProvider RESULTCLASS devralır
    public class SharePointProvider : 
    VirtualPathProvider
  6. Bir anahtar-değer çifti //from veritabanı alınan iki özel members.
    //It contains the file name and content as a key-value pair retrieved 
    //from the database.
    Hashtable virtualFiles = null; 
    DBUtility utility = null;
  7. AppInitialize yöntemi ekleyin. Bu işlem en önemli yöntemi AppInitialize yöntemidir. ASP.NET uygulama başlatma sırasında çalışma zamanı alt yapısı, bu yöntem çağırır.

    Not Bu yöntem bu sınıf, bir Web.config dosyası olmadan yüklemek ASP.NET çalışma zamanı vermiyoruz bir el ile olarak düşünülebilir.

    Bu yöntemi ile birlikte birden fazla sınıf varsa, bir derleme hatası oluşur. Bu yöntem içinde biz bizim sağlayıcısı ile ASP.NET barındırma ortamında kaydetmek. Şimdi tüm istekleri bir Web sayfası için bu sağlayıcıyı. geçecek
    public static void AppInitialize()
    {
       HostingEnvironment.RegisterVirtualPathProvider(new SharePointProvider());
    }
  8. Kurucu SharePointProvider sınıfı için uygular. Bu adım, size sanal tüm dosyaları ve içeriklerini hızlı erişim için bellekte tanımlamanızdan bağlıdır. Bellek içi sonuç kümesi, içeriği geçersiz kadar çaba göstereceğiz. Içerik veritabanında içerik değiştiğinde tamamlanmaz güncelleştirilmesi gerekiyor.
    public SharePointProvider(): base() 
    {
       utility = new DBUtility();
       virtualFiles = utility.GetVirtualFiles();
    }
  9. Sonra IsPathVirtual yöntemi ekleyin. Bu yöntemi kullanarak, biz istenen dosyayı sanal bir yolu olup olmadığını belirleyebilirsiniz. Zaten SharePointDir klasördeki istenen dosyanın bir sanal. alınır verdik
    private bool IsPathVirtual(string virtualPath)
    {
       String checkPath = 
          VirtualPathUtility.ToAppRelative(virtualPath);
       return checkPath.StartsWith("~/SharePointDir".ToLower().ToString(), StringComparison.InvariantCultureIgnoreCase);    
    }
  10. FileExists yöntemi, dosyanın var olup olmadığını döndürür. Bu doğrulama istenen dosyanın veritabanında bulunan yapar. Dosya yoksa, daha önce kaydedilmiş sanal yol sağlayıcısı nesnesi başvurusunu derleme sistemdeki edinir ve dosyayı yeniden FileExists yöntemi çağrılarak bulmak deneyecek. Dosyayı yine de bulunmazsa, size başka alırsınız "404 (dosya bulunamıyor)" hata iletisini.
    public override bool FileExists(string virtualPath)
    {
             if (IsPathVirtual(virtualPath))
             {
                SharePointVirtualFile file = (SharePointVirtualFile)GetFile(virtualPath);
                // Determine whether the file exists on the virtual file 
                // system.
                if (utility.CheckIfFileExists(virtualPath))
                    return true;
                else
                    return Previous.FileExists(virtualPath);
              }
              else
              return Previous.FileExists(virtualPath);
     }
  11. Benzer şekilde DirectoryExists yöntemi vardır. Bu yöntem, sağlayıcı bir bağımsız değişken olarak geçirilen sanal dosya yolu hizmet vermeden, doğru döndürecektir. Aksi durumda, sağlayıcı sağlayıcının daha önce kaydedilmiş sanal dosya yolu zamanki verir ve klasörü yoksa, biz 404 hata iletileri yeniden alırsınız.
    public override bool DirectoryExists(string virtualDir)
    {
       if (IsPathVirtual(virtualDir))
       { 
          // Right now, we are not storing the directory information in  
          // our SharePoint Portal Services database. We assume that all of the virtual 
          // content is served from a directory that is named SharePointDir and was
          // created inside the ASP.NET Web site. Therefore, we will always 
          // return TRUE in this case.	
          SharePointVirtualDirectory dir = (SharePointVirtualDirectory)GetDirectory(virtualDir);
          return true;
       }
       else
          return Previous.DirectoryExists(virtualDir);
     }
  12. Sonraki GetFile ve GetDirectory yöntemleri vardır. FileExists ve DirectoryExists yöntem çağrıları başarılı olduktan sonra ASP.NET çalışma zamanı, bu yöntem sanal yol sağlayıcısı çağırır.
    //This method is used by the compilation system to obtain a VirtualFile instance to 
    //work with a given virtual file path.
    public override VirtualFile GetFile(string virtualPath)
    {
       if (IsPathVirtual(virtualPath))
          return new SharePointVirtualFile(virtualPath, this);
       else
          return Previous.GetFile(virtualPath);
    }
    
    //This method is used by the compilation system to obtain a VirtualDirectory 
    //instance to work with a given virtual directory.
    public override VirtualDirectory GetDirectory(string virtualDir)
    {
       if (IsPathVirtual(virtualDir))
           return new SharePointVirtualDirectory(virtualDir, this);
       else
           return Previous.GetDirectory(virtualDir);
    }
  13. Daha sonra bu örnek. VirtualFile sınıfı tarafından kullanılan birkaç yardımcı programı yöntemleri eklemeniz gerekir
    public string GetFileContents(string virPath)
    {
       return utility.GetFileContents(virPath);	
    }
    
    public Hashtable GetVirtualData
    {
       get { return this.virtualFiles; }
       set { this.virtualFiles = value; }
    }
    Not bu örnekte, biz düzenek sanal içeriğe yapılan değişiklikler yapı sisteme bildirmek için kullanmıyorsunuz demektir. Sanal sağlayıcının önbelleği sanal kaynak yardımcı olmak için kullanılan GetCacheDependency adlı bir API sunar. Dosyalardan herhangi birinin geçersiz duruma geldiğinde size önbellekteki geçersiz kılar. Daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
    http://msdn2.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.getcachedependency.aspx (http://msdn2.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.getcachedependency.aspx)
  14. Biz ana sağlayıcı sınıfıyla yapılır. Şimdi SharePointDirectory.cs kaynak dosyayı açın. Bu sınıf sanallaştırılmış kaynaklar için bir özet işlevi görecek. Sanal dizin sınıfı hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
    http://msdn2.microsoft.com/en-us/library/system.web.hosting.virtualdirectory.aspx (http://msdn2.microsoft.com/en-us/library/system.web.hosting.virtualdirectory.aspx)
  15. Sanal dizin sınıfı soyut bir sınıf olduğundan, size tüm Soyut yöntemler geçersiz kılmak gerekir. Bu örnekte <a0></a0> size sanal içeriği tek bir sanal dizin içinde geliyor varsayalım çünkü ancak size ek uygulama geçersiz kılınmış Bu yöntemlerde sağlamaz. Bu nedenle, sınıf tanımı aşağıdaki gibi görünecektir:
    public class SharePointVirtualDirectory : VirtualDirectory
    {
       SharePointProvider spp;
       public SharePointVirtualDirectory(string virtualDir, SharePointProvider provider) : base(virtualDir){spp = provider;}
       private ArrayList children = new ArrayList();
       public override IEnumerable Children {get {return children;}}
       private ArrayList directories = new ArrayList();
       public override IEnumerable Directories{get {return directories;}}
       private ArrayList files = new ArrayList();
       public override IEnumerable Files{get { return files;}}
    }
  16. Artık, biz VirtualFile soyut sınıfını SharePointVirtualFile adlı bir sınıf tanımlamak hazırsınız. Bu sınıf, OpenFile adında geçersiz kılınmış bir özet yöntem olacaktır. ASP.NET tarafından kullanılan bir akışı örneği OpenFile yöntemi döndürür sanal dosyayı kullanmak için bir ortam oluşturmak.
    public class SharePointVirtualFile : VirtualFile
    {
       private SharePointProvider spp;
       private string virPath;
    
       public SharePointVirtualFile(string virtualPath, SharePointProvider provider) : base(virtualPath)
       {
          this.spp = provider;
          this.virPath = virtualPath;
        }
    
        public override Stream Open()
        {
           string fileContents = spp.GetFileContents(virPath);
           Stream stream = new MemoryStream();
           if (fileContents != null || fileContents.Equals(String.Empty))
           {
               // Put the page content on the stream.
               StreamWriter writer = new StreamWriter(stream);
               writer.Write(fileContents);
               writer.Flush();
               stream.Seek(0, SeekOrigin.Begin);
            }
            return stream;
          }
    }
  17. En son olarak, biz DBUtility.cs dosyasında DBUtiliity sınıfı tanımlayacaktır. Yöntem uygulama sağlanmadı. DBUtiliity sınıfı, içeriği ile birlikte diğer birkaç yardımcı program işlevleri veritabanından elde etmek için sağlayıcı sınıfları tarafından kullanılır.
    public class DBUtility
    {
       SqlConnection cnn;
       string connectionString = "connectionstring to DB…";
        
       //Run a select query to obtain all files and their content, and 
       //store the result in a in memory hashtable to obtain fast access.	
       string cmdSelectAllFiles = "SELECT FileName,FileData FROM VirtualFileSystem";
       Hashtable virtualFiles = null;
    
       public DBUtility(){ virtualFiles = new Hashtable();}
    
       public Hashtable GetVirtualFiles()
       {
          /* 1. Open a connection.  
             2. Select all the files.
             3. Iterate through the result and store the file name as a Key and
                content as a Value in a hashtable.
             4. Finally return hashtable.
          */
          return virtualFiles;
        }
    
       public string GetFileContents(string virPath)
       {
          //Obtain a file name from the virtual path. 
          string fileName = ExtractFileName(virPath);
            
          //Ater you obtain the file name, find it in the hashtable, and then
          //return the content for that file from the Values collection.	
        }
    
       private string ExtractFileName(string virPath)
       {
           //Extract a file name from the virtual path and return it.
       }
    
       public bool CheckIfFileExists(string virPath)
       {
           string fileName = ExtractFileName(virPath);
           //After you extract the file name, find it in the hashtable of 
           //virtual files. If the file name is found, return true. Otherwise, return false.	
        }
    }
    
    Bu sağlayıcı içeriği işlenen değiştirebilirsiniz ayrıcalıklı bir işlem olduğundan kaydetme akılda tutulması gereken Not bir şey olur. Özel sınıflar VirtualPathProvider, sanal dizin ve VirtualFile sınıfı altında tam güven izinlerini'nı çalıştırmanız gerekir. Daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:
    http://msdn2.microsoft.com/en-us/library/system.web.aspnethostingpermission.aspx (http://msdn2.microsoft.com/en-us/library/system.web.aspnethostingpermission.aspx)
  18. Size yapılması sağlayıcı sınıfları ve şimdi bizim uygulama yazma sanal içerik hazırdır. Uygulamayı vermek için Görünüm ve davranış bir SharePoint Portal Services Yönetimi Web sayfasının bir AdministrationPage.aspx sayfa Web sitesinin kök klasörde oluşturduğum. The page contains a GridView control that is bound with a virtual table.
    <asp:GridView ID="GridView1" runat="server"  
          AutoGenerateColumns="False" DataSourceID="SqlDataSource1" >
        <Columns>
          <asp:BoundField DataField="FileName" HeaderText="FileName" />
          <asp:TemplateField HeaderText="Remote Content" >
            <ItemTemplate>
              <asp:Label ID="Label1" runat="server"  
                         Text="FileContent...."></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
              <asp:TextBox ID="Label1" runat="server" Text='<%# 
                    Eval("FileData", "{0}") %>'></asp:TextBox>
            </EditItemTemplate>
            </asp:TemplateField>
            <asp:HyperLinkField HeaderText="Virtual Path" 
                 DataTextField="VirtualPath" Target="_self" 
                 DataNavigateUrlFormatString= "{0}"  
                 DataNavigateUrlFields="VirtualPath" />   
            <asp:CommandField  ShowEditButton="True" 
                 ShowDeleteButton="True" CausesValidation="false" 
                 HeaderText="Operations" CancelText="Cancel" />   
       </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                       ConnectionString="<%$ 
        ConnectionStrings:VirtualProviderDBConnectionString %>"
        SelectCommand="SELECT [FileName], [FileData], [VirtualPath] FROM 
        [VirtualFileSystem] Where [FileName] LIKE '%aspx%'”>
    </asp:SqlDataSource>
    

Sonuç

Sanal yol sağlayıcısı için bu tüm, şimdilik. Umarım bu sütun, ASP.NET 2.0 için temel bir derleme işlemi anlamanıza yardımcı olur ve hizmet verdiği bir veritabanından biz çalışmak gibi içeriği olmayan dosya tabanlı içeriği ASP.NET çalışma zamanı nasıl izin verebilirsiniz.

Zaman için teşekkürler. ASP.NET 2. 0 ' eklenen yeni özellikleri hakkında daha fazla yazma bekler. Daha fazla bilgi ve örnekler için MSDN Web sitelerini ziyaret edin:
ASP.NET derleme genel bakış
http://msdn2.microsoft.com/en-us/library/ms178466.aspx (http://msdn2.microsoft.com/en-us/library/ms178466.aspx)

Içeriğe erişim virtualizing: Web sitenizden bir ZIP dosyası hizmet veren
http://msdn2.microsoft.com/en-us/library/aa479502.aspx (http://msdn2.microsoft.com/en-us/library/aa479502.aspx)
Her zaman olarak, gelecekte sütunları adreslenmiş istediğiniz konuları veya bilgi bankasının Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) formunu kullanarak fikir gönderme bildirmekten çekinmeyin.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 2.0
Anahtar Kelimeler: 
kbmt kbhowto kbasp KB910441 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:910441  (http://support.microsoft.com/kb/910441/en-us/ )