Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式将新虚拟目录添加到Azure WebApp_C#_Asp.net_Azure_Azure Web App Service_Azure Webapps - Fatal编程技术网

C# 以编程方式将新虚拟目录添加到Azure WebApp

C# 以编程方式将新虚拟目录添加到Azure WebApp,c#,asp.net,azure,azure-web-app-service,azure-webapps,C#,Asp.net,Azure,Azure Web App Service,Azure Webapps,是否可以使用Azure SDK或Azure REST API将虚拟目录添加到Azure Web应用程序网站 我们有一个ASP.NET CMS网站(主站点位于),它能够创建新的网站实例,指向与主站点相同的源代码,并具有一级虚拟目录名(例如)。每个虚拟目录都有自己的用户和管理 我可以在Azure门户中手动添加虚拟目录。我还可以使用.NET API在本地IIS中以编程方式创建它(ServerManager来自Microsoft.Web.Administration),但它在Azure Web应用程序中

是否可以使用Azure SDK或Azure REST API将虚拟目录添加到Azure Web应用程序网站

我们有一个ASP.NET CMS网站(主站点位于),它能够创建新的网站实例,指向与主站点相同的源代码,并具有一级虚拟目录名(例如)。每个虚拟目录都有自己的用户和管理

我可以在Azure门户中手动添加虚拟目录。我还可以使用.NET API在本地IIS中以编程方式创建它(ServerManager来自Microsoft.Web.Administration),但它在Azure Web应用程序中不起作用


请提供帮助。

您可以使用管理rest api创建azure webapp的虚拟目录

public void CreateVD(string name)
{
    try
    {
        System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(String.Format(@"https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Web/sites/{2}/config/web?api-version=2015-08-01",subscriptionId,webSpaceName,webSiteName));
        request.Headers.Add("x-ms-version", "2013-03-01");
        request.ContentType = "application/json";
        var token = GetAuthorizationHeader();
        request.Headers.Add("Authorization", "Bearer" + " " + token);

        System.Net.WebResponse response = request.GetResponse();

        string data = "";
        using (System.IO.Stream stream = response.GetResponseStream())
        {
              System.IO.StreamReader sr = new System.IO.StreamReader(stream);
              data = sr.ReadToEnd();
              sr.Close();
              stream.Close();
              Console.WriteLine("data found");
        }

        if (data == "")
        {
              Console.WriteLine("Error in collecting data");
                    return;
        }

        string path = name, directory = name;
        data = data.Replace("virtualApplications\":[", "virtualApplications\":[{\"virtualPath\":\"/" + path + "\",\"physicalPath\":\"site\\\\wwwroot\\\\" + directory + "\",\"preloadEnabled\":false,\"virtualDirectories\":null},");
        request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(String.Format(@"https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Web/sites/{2}/config/web?api-version=2015-08-01",subscriptionId,webSpaceName,webSiteName));
        request.Headers.Add("x-ms-version", "2013-03-01");
        request.ContentType = "application/json";
        request.AllowWriteStreamBuffering = false;
        request.Accept = "Accept=application/json";
        request.SendChunked = false;
        request.Headers.Add("Authorization", "Bearer" + " " + token);
        request.ContentLength = data.Length;
        request.Method = "PUT";

        System.IO.StreamWriter sw = new System.IO.StreamWriter(request.GetRequestStream());
        sw.Write(data);
        sw.Close();

        response = request.GetResponse();

        using (System.IO.Stream stream = response.GetResponseStream())
        {
             data = (new System.IO.StreamReader(stream)).ReadToEnd();
             Console.WriteLine("DONE");
        }
   }
   catch (Exception ex)
   {
        Console.WriteLine(ex.StackTrace);
   }
}
对于访问令牌,可以使用以下代码获取令牌

private string GetAuthorizationHeader()
{
    AuthenticationResult result = null;

    var context = new AuthenticationContext(string.Format(loginpath, tenantId));

    result = context.AcquireToken(apiEndpoint, clientId, new Uri(redirectUri));
    }

您可以使用管理rest api创建azure webapp的虚拟目录

public void CreateVD(string name)
{
    try
    {
        System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(String.Format(@"https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Web/sites/{2}/config/web?api-version=2015-08-01",subscriptionId,webSpaceName,webSiteName));
        request.Headers.Add("x-ms-version", "2013-03-01");
        request.ContentType = "application/json";
        var token = GetAuthorizationHeader();
        request.Headers.Add("Authorization", "Bearer" + " " + token);

        System.Net.WebResponse response = request.GetResponse();

        string data = "";
        using (System.IO.Stream stream = response.GetResponseStream())
        {
              System.IO.StreamReader sr = new System.IO.StreamReader(stream);
              data = sr.ReadToEnd();
              sr.Close();
              stream.Close();
              Console.WriteLine("data found");
        }

        if (data == "")
        {
              Console.WriteLine("Error in collecting data");
                    return;
        }

        string path = name, directory = name;
        data = data.Replace("virtualApplications\":[", "virtualApplications\":[{\"virtualPath\":\"/" + path + "\",\"physicalPath\":\"site\\\\wwwroot\\\\" + directory + "\",\"preloadEnabled\":false,\"virtualDirectories\":null},");
        request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(String.Format(@"https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Web/sites/{2}/config/web?api-version=2015-08-01",subscriptionId,webSpaceName,webSiteName));
        request.Headers.Add("x-ms-version", "2013-03-01");
        request.ContentType = "application/json";
        request.AllowWriteStreamBuffering = false;
        request.Accept = "Accept=application/json";
        request.SendChunked = false;
        request.Headers.Add("Authorization", "Bearer" + " " + token);
        request.ContentLength = data.Length;
        request.Method = "PUT";

        System.IO.StreamWriter sw = new System.IO.StreamWriter(request.GetRequestStream());
        sw.Write(data);
        sw.Close();

        response = request.GetResponse();

        using (System.IO.Stream stream = response.GetResponseStream())
        {
             data = (new System.IO.StreamReader(stream)).ReadToEnd();
             Console.WriteLine("DONE");
        }
   }
   catch (Exception ex)
   {
        Console.WriteLine(ex.StackTrace);
   }
}
对于访问令牌,可以使用以下代码获取令牌

private string GetAuthorizationHeader()
{
    AuthenticationResult result = null;

    var context = new AuthenticationContext(string.Format(loginpath, tenantId));

    result = context.AcquireToken(apiEndpoint, clientId, new Uri(redirectUri));
    }