0
votes

need solution for website publishing form web application hosted in Azure.

I tried the following code, It create the domain but I was not able to upload the Published website.

private HttpResponseMessage CreateWebsite(CreateSiteViewModel site) { var cert = X509Certificate.CreateFromCertFile(Server.MapPath(site.CertPath)); string uri = string.Format("https://management.core.windows.net/{0}/services/WebSpaces/{1}/sites/", site.Subscription, site.WebSpaceName);

        // A url which is looking for the right public key with 
        // the incomming https request

        var req = (HttpWebRequest)WebRequest.Create(uri);

        String dataToPost =string.Format(
            @"<Site xmlns=""http://schemas.microsoft.com/windowsazure"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">
              <HostNames xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays"">
                <a:string>{0}.azurewebsites.net</a:string>
              </HostNames>
              <Name>{0}</Name>
              <WebSpaceToCreate>
                <GeoRegion>{1}</GeoRegion>
                <Name>{2}</Name>
                <Plan>VirtualDedicatedPlan</Plan>
              </WebSpaceToCreate>
            </Site>", site.SiteName, site.WebSpaceGeo, site.WebSpaceName);

        req.Method = "POST";        // Post method
        //You can also use ContentType = "text/xml";

        // with the request
        req.UserAgent = "Fiddler";
        req.Headers.Add("x-ms-version", "2013-08-01");
        req.ClientCertificates.Add(cert);
        // Attaching the Certificate To the request

        // when you browse manually you get a dialogue box asking 
        // that whether you want to browse over a secure connection.
        // this line will suppress that message
        //(pragramatically saying ok to that message). 

        string postData = dataToPost;
        var encoding = new ASCIIEncoding();
        byte[] byte1 = encoding.GetBytes(postData);

        // Set the content length of the string being posted.
        req.ContentLength = byte1.Length;

        Stream newStream = req.GetRequestStream();

        newStream.Write(byte1, 0, byte1.Length);

        // Close the Stream object.
        newStream.Close();

        var rsp = (HttpWebResponse)req.GetResponse();

        var reader = new StreamReader(rsp.GetResponseStream());
        String retData = reader.ReadToEnd();

        req.GetRequestStream().Close();
        rsp.GetResponseStream().Close();

        return new HttpResponseMessage
        {
            StatusCode = rsp.StatusCode,
            Content = new StringContent(retData)
        };
    }
1

1 Answers

0
votes

I am not entirely sure what you try to achieve here. But if I understand correctly you want to publish a website programmatic.

You cannot do this (publish a website programmatic) with Azure Management APIs. Azure management APIs are to manage Azure services and resources. The web site content itself is not in any way Azure Service, nor an Azure resource.

If you want to programmaticly publish a website to Azure Web Site, I would suggest taking deep read into How to deploy an Azure Web site.

Out from what is mentioned there, pretty easy to automate are