سؤال

وأود أن الإعداد صفحة المشرف (ASP.NET/C#) التي يمكن أن تضيف رؤوس المضيف IIS إلى الموقع أن صفحة الإدارة مستضافة على. هل هذا ممكن؟

وأنا لا أريد أن إضافة رأس HTTP - أريد أن ميميك عمل الذهاب إلى IIS يدويا، وبذلك يصل خصائص الموقع، بالضغط متقدمة على علامة التبويب الموقع، وفي الشاشة تحديد موقع متقدمة وجديدة " الهوية "مع قيمة رأس المضيف، عنوان IP ومنفذ TCP.

هل كانت مفيدة؟

المحلول

وهنا منتدى حول إضافة هوية أخرى إلى موقع برمجيا RSS

وأيضا، وهنا مقالا عن كيفية <لأ href = "https://web.archive.org/web/20090210085202/http://www.gafvert.info/notes/csharp_add_host_header.htm" يختلط = "نوفولو noreferrer "> إلحاق رأس المضيف بواسطة التعليمات البرمجية في IIS :

<اقتباس فقرة>   

والمثال التالي يضيف رأس مضيف لموقع على شبكة الانترنت في IIS. وهذا ينطوي على تغيير الخاصية ServerBindings. لا توجد طريقة إلحاق التي يمكن استخدامها لإلحاق serverbinding جديدة لهذا العقار، وذلك ما يجب القيام به هو قراءة العقار بأكمله ومن ثم إضافته مرة أخرى، جنبا إلى جنب مع البيانات الجديدة. وهذا هو ما يحدث في التعليمات البرمجية أدناه. نوع بيانات الملكية ServerBindings هو MULTISZ، وشكل السلسلة IP: ميناء: اسم المضيف

     

لاحظ أن هذا المثال رمز لا تفعل أي التحقق من الخطأ. من المهم أن كل دخول ServerBindings هي فريدة من نوعها، وأنت - مبرمج - هي المسؤولة عن التحقق من هذا (مما يعني أنك بحاجة إلى حلقة من خلال جميع مداخل ومعرفة ما اذا كان ما هو على وشك أن يضاف هي فريدة من نوعها)

using System.DirectoryServices;
using System;

public class IISAdmin
{
    /// <summary>
    /// Adds a host header value to a specified website. WARNING: NO ERROR CHECKING IS PERFORMED IN THIS EXAMPLE. 
    /// YOU ARE RESPONSIBLE FOR THAT EVERY ENTRY IS UNIQUE
    /// </summary>
    /// <param name="hostHeader">The host header. Must be in the form IP:Port:Hostname </param>
    /// <param name="websiteID">The ID of the website the host header should be added to </param>
    public static void AddHostHeader(string hostHeader, string websiteID)
    {

        DirectoryEntry site = new DirectoryEntry("IIS://localhost/w3svc/" + websiteID );
        try
        {                        
            //Get everything currently in the serverbindings propery. 
            PropertyValueCollection serverBindings = site.Properties["ServerBindings"];

            //Add the new binding
            serverBindings.Add(hostHeader);

            //Create an object array and copy the content to this array
            Object [] newList = new Object[serverBindings.Count];
            serverBindings.CopyTo(newList, 0);

            //Write to metabase
            site.Properties["ServerBindings"].Value = newList;            

            //Commit the changes
            site.CommitChanges();

        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }

    }
}

public class TestApp
{
    public static void Main(string[] args)
    {
        IISAdmin.AddHostHeader(":80:test.com", "1");
    }
}

ولكن لست متأكدا من كيفية حلقة من خلال القيم رأس للقيام الخطأ التدقيق المذكورة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top