112032a8be | ||
---|---|---|
assets | ||
scripts | ||
src | ||
test/Microsoft.IIS.Administration.Tests | ||
.gitignore | ||
LICENSE.md | ||
Microsoft.IIS.Administration.sln | ||
README.md | ||
ThirdPartyNotices.txt | ||
appveyor.yml | ||
global.json |
README.md
Microsoft IIS Administration API
Requirements:
- IIS installed
- Windows authentication enabled
- Hostable Web Core enabled
- ASP.NET Core Module installed (https://go.microsoft.com/fwlink/?LinkId=817246)
Nano Server Installation:
There is a blog post to get up and running on Nano Server located at https://blogs.iis.net/adminapi/microsoft-iis-administration-on-nano-server.
Running Tests:
- Open the project in Visual Studio as an Administrator and launch without debugging
- Open another instance of the project and run the tests located in the 'test' folder
- Tests can also be run with the CLI
Publish and Install:
- Run PowerShell as an Administrator
- Run the Publish.ps1 script located in the scripts directory
- <OutputDirectory>\setup\setup.ps1 Install -Verbose
Using the new API
- Navigate to https://manage.iis.net
- Click 'Get Access Token'
- Generate an access token and copy it to the clipboard
- Exit the access tokens window and return to the connection screen
- Paste the access token into the Access Token field of the connection screen
- Click 'Connect'
Dev Setup
- Open the solution in VS 2015, which will automatically trigger a package restore
- Build the solution
- Run the solution (F5) so Visual Studio automatically generates required IIS Express files
- Using PowerShell, run the Configure-DevEnvironment.ps1 script in the scripts directory
Examples
Intialize Api Client
var httpClientHandler = new HttpClientHandler()
{
Credentials = new NetworkCredential(userName, password, domain)
};
var apiClient = new HttpClient(httpClientHandler);
// Set access token for every request
apiClient.DefaultRequestHeaders.Add("Access-Token", "Bearer {token}");
Get Web Sites
var res = apiClient.GetAsync("https://localhost:55539/api/webserver/websites").Result;
if (res.StatusCode != HttpStatusCode.OK) {
HandleError(res);
}
JArray sites = JObject.Parse(res.Content.ReadAsStringAsync().Result).Value<JArray>("websites");
Create a Web Site
var newSite = new {
name = "Contoso",
physical_path = @"C:\sites\Contoso",
bindings = new[] {
new {
port = 8080,
is_https = false,
ip_address = "*"
}
}
};
var res = apiClient.PostAsJsonAsync<object>("https://localhost:55539/api/webserver/websites", newSite).Result;
if (res.StatusCode != HttpStatusCode.Created) {
HandleError(res);
}
JObject site = JObject.Parse(res.Content.ReadAsStringAsync().Result);