Azure .NET Libraries 入門

来源:http://www.cnblogs.com/Azurecommunity/archive/2017/08/16/7371958.html
-Advertisement-
Play Games

本指南演示了以下 Azure .NET API 的用法,包括設置認證、創建並使用 Azure 存儲、創建並使用 Azure SQL 資料庫、部署虛擬機、從 GitHub 部署 Azure Web 應用。在本教程中完成的所有操作均符合1元試用條件。 開始之前 如果您還沒有 Azure 賬戶,可以申請1 ...


本指南演示了以下 Azure .NET API 的用法,包括設置認證、創建並使用 Azure 存儲、創建並使用 Azure SQL 資料庫、部署虛擬機、從 GitHub 部署 Azure Web 應用。在本教程中完成的所有操作均符合1元試用條件。

開始之前

如果您還沒有 Azure 賬戶,可以申請1元試用賬戶。
安裝 Azure PowerShell

設置認證

為了使用 Azure .NET Management Libraires ,您創建的應用程式需要許可權來讀取和創建 Azure 訂閱中的資源。我們首先需要為應用程式創建一個 service principal , service principal 可以通過非交互方式授予應用程式所需的許可權 。1. 以下 PoweShell 命令登陸中國區 Azure:
    

Login-AzureRmAccount -EnvironmentName AzureChinaClou

  

 

註意記錄 TenandId 和 SubscriptionId,在後續步驟中需要用到。

 2. 以下命令創建 service principal:

# Create the service principal (use a strong password)
$sp = New-AzureRmADServicePrincipal -DisplayName "AzureDotNetTest" -Password "password"
# Give it the permissions it needs...
New-AzureRmRoleAssignment -ServicePrincipalName $sp.ApplicationId -RoleDefinitionName Contributor
# Display the Application ID, because we'll need it later.
$sp | Select DisplayName, ApplicationId

 註意記錄 ApplicationId。 

3. 一個名為 Azureauth.properties 的 txt 文件,輸入以下內容:

# sample management library properties file
subscription=dd9eebf5-eae4-4d04-a371-29ba614032e8
client=67699411-1af6-4341-a47e-5d4cf0b62484
key=P@ssword1
tenant=dd8210ad-5216-499c-ab57-6d297fc0e5d2
managementURI=https://management.core.chinacloudapi.cn/
baseURL=https://management.chinacloudapi.cn/
authURL=https://login.chinacloudapi.cn/
graphURL=https://graph.chinacloudapi.cn/

 • subscription:1中記錄的 SubscriptionId
 • client:2中記錄的 ApplicationId
 • key:2中的 -Password 參數值
 • tenant:1中記錄的 TenantId


4. 保存 Azureauth.properties,運行以下命令將 Azureauth.properties 的存放路徑設置為環境變數 AZURE_AUTH_LOCATION。
  [Environment]::SetEnvironmentVariable("AZURE_AUTH_LOCATION", "C:\src\azureauth.properties.txt", "User")

設置 Visual Studio 連接到中國區 Azure

根據您使用的 Visual Studio 版本,請參考中國區 Azure 應用程式開發說明中的設置開發電腦,本教程使用的是 Visual Studio 2017 community 版本。
步驟3:創建新的 console 應用程式。
打開 Visual Studio, “File”->”New”->”Project”,選擇 Console App (.NET Core)。

創建完成後,打開 Package Manager Console,運行以下命令安裝 Azure .NET Management Libraries:

# Azure Management Libraries for .NET (Fluent)
Install-Package Microsoft.Azure.Management.Fluent
# Azure Store client libraries
Install-Package WindowsAzure.Storage
# SQL Database client libraries
Install-Package System.Data.SqlClient

創建虛擬機

打開 Program.cs 文件,添加以下命名空間:

using System;
using System.Linq;
using Microsoft.Azure.Management.Compute.Fluent;
using Microsoft.Azure.Management.Compute.Fluent.Models;
using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using System.Data.SqlClient;

以下示例將在您的 Azure 訂閱中創建一臺 Windows 虛擬機,該虛擬機運行在“中國北部”,虛擬機類型為 StandardD2V2,系統為 WindowsServer2012R2Datacenter。
將 Main 方法替換為以下代碼,請將 username 和 password 變數替換成您的值:

static void Main(string[] args)
{
// Set some variables...
string username = "vmuser1";
string password = "Password0123!";
string rgName = "sampleResourceGroup";
string windowsVmName = "sampleWindowsVM";
string publicIpDnsLabel = "samplePublicIP";
// Authenticate
var credentials = SdkContext.AzureCredentialsFactory
.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));
var azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(credentials)
.WithDefaultSubscription();
// Create the VM
Console.WriteLine("Creating VM...");
var windowsVM = azure.VirtualMachines.Define(windowsVmName)
.WithRegion(Region.ChinaEast)
.WithNewResourceGroup(rgName)
.WithNewPrimaryNetwork("10.0.0.0/28")
.WithPrimaryPrivateIPAddressDynamic()
.WithNewPrimaryPublicIPAddress(publicIpDnsLabel)
.WithPopularWindowsImage(KnownWindowsVirtualMachineImage.WindowsServer2012R2Datacenter)
.WithAdminUsername(username)
.WithAdminPassword(password)
.WithSize(VirtualMachineSizeTypes.StandardD2V2)
.Create();
// Wait for the user
Console.WriteLine("Press enter to continue...");
Console.ReadLine();
}

按 F5 運行程式。幾分鐘後,當看到“Press enter to continue...”時,說明虛擬機已經創建完畢,您可以運行以下 PowerShell 命令來確認虛擬機是否創建成功:

Get-AzureRmVm -ResourceGroupName sampleResourceGroup 

或者在 Azure 門戶中查看: 

從 GitHub 倉庫部署 Azure Web 應用

現在我們將修改代碼來實現從 GitHub 倉庫部署 Web 應用程式。將 Main 方法替換為以下代碼:

static void Main(string[] args)
{
// Set some variables...
string rgName = "sampleWebAppGroup";
string appName = SdkContext.RandomResourceName("WebApp", 20);
// Authenticate
var credentials = SdkContext.AzureCredentialsFactory
.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));
var azure = Azure
.Configure()
.Authenticate(credentials)
.WithDefaultSubscription();
// Create the web app
Console.WriteLine("Creating Web App...");
var app = azure.WebApps.Define(appName)
.WithRegion(Region.ChinaNorth)
.WithNewResourceGroup(rgName)
.WithNewFreeAppServicePlan()
.DefineSourceControl()
.WithPublicGitRepository("https://github.com/Azure-Samples/app-service-web-dotnet-get-started")
.WithBranch("master")
.Attach()
.Create();
Console.WriteLine("Your web app is live at: https://{0}", app.HostNames.First());
// Wait for the user
Console.WriteLine("Press enter to continue...");
Console.ReadLine();
}

按 F5 運行程式,完成後返回如下結果。

訪問 https://webapp0513224523a.chinacloudsites.cn 就能看到部署在 Azure web 應用中的.NET 程式啦。

 

連接到 Azure SQL 資料庫

下麵我們將演示如何創建 Azure SQL 資料庫,連接到資料庫創建表並插入值。將 Main 方法替換為以下代碼:

static void Main(string[] args)
{
// Set some variables...
string rgName = "sampleSQLDBGroup";
string adminUser = SdkContext.RandomResourceName("db", 8);
string sqlServerName = SdkContext.RandomResourceName("sql", 10);
string sqlDbName = SdkContext.RandomResourceName("dbname", 8);
string dbPassword = "P@ssword01!";
// Authenticate
var credentials = SdkContext.AzureCredentialsFactory
.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));
var azure = Azure
.Configure()
.Authenticate(credentials)
.WithDefaultSubscription();
// Create the SQL server and database
Console.WriteLine("Creating server...");
var sqlServer = azure.SqlServers.Define(sqlServerName)
.WithRegion(Region.ChinaNorth)
.WithNewResourceGroup(rgName)
.WithAdministratorLogin(adminUser)
.WithAdministratorPassword(dbPassword)
.WithNewFirewallRule("0.0.0.0", "255.255.255.255")
.Create();
Console.WriteLine("Creating database...");
var sqlDb = sqlServer.Databases.Define(sqlDbName).Create();
// Display information for connecting later...
Console.WriteLine("Created database {0} in server {1}.", sqlDbName, sqlServer.FullyQualifiedDomainName);
Console.WriteLine("Your user name is {0}.", adminUser + "@" + sqlServer.Name);
// Build the connection string
var builder = new SqlConnectionStringBuilder();
builder.DataSource = sqlServer.FullyQualifiedDomainName;
builder.InitialCatalog = sqlDbName;
builder.UserID = adminUser + "@" + sqlServer.Name; // Format user ID as "user@server"
builder.Password = dbPassword;
builder.Encrypt = true;
builder.TrustServerCertificate = true;
// connect to the database, create a table and insert an entry into it
using (var conn = new SqlConnection(builder.ConnectionString))
{
conn.Open();
Console.WriteLine("Populating database...");
var createCommand = new SqlCommand("CREATE TABLE CLOUD (name varchar(255), code int);", conn);
createCommand.ExecuteNonQuery();
var insertCommand = new SqlCommand("INSERT INTO CLOUD (name, code ) VALUES ('Azure', 1);", conn);
insertCommand.ExecuteNonQuery();
Console.WriteLine("Reading from database...");
var selectCommand = new SqlCommand("SELECT * FROM CLOUD", conn);
var results = selectCommand.ExecuteReader();
while (results.Read())
{
Console.WriteLine("Name: {0} Code: {1}", results[0], results[1]);
}
}
// Wait for the user
Console.WriteLine("Press enter to continue...");
Console.ReadLine();
}

按 F5 運行程式,運行完成後我們通過 SQL Server Management Studio 來驗證:

打開 SSMS,根據上面程式的輸出結果,ServerName 為 sql646624.database.chinacloudapi.cn,用戶名為:db51559@sql64662, 密碼為代碼中定義的變數 dbPassword 的值 P@ssword01!,使用 SQL Server Authenticaiton 方式登錄:

可以看到我們在 Azure SQL 資料庫中創建了一張名為 dbo.CLOUD 的表,並插入了一條數據。

 

將文件上傳到 Azure Storage

下麵我們將演示如何在 Azure 中創建存儲賬戶並將文件上傳到 Blob 存儲。將 Main 方法替換為以下代碼:
static void Main(string[] args)

{
// Set some variables...
string rgName = "sampleStorageGroup";
string storageAccountName = SdkContext.RandomResourceName("st", 10);
// Authenticate
var credentials = SdkContext.AzureCredentialsFactory
.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));
var azure = Azure
.Configure()
.Authenticate(credentials)
.WithDefaultSubscription();
// Create the storage account
Console.WriteLine("Creating storage account...");
var storage = azure.StorageAccounts.Define(storageAccountName)
.WithRegion(Region.ChinaNorth)
.WithNewResourceGroup(rgName)
.Create();
var storageKeys = storage.GetKeys();
string storageConnectionString = "DefaultEndpointsProtocol=https;"
+ "AccountName=" + storage.Name
+ ";AccountKey=" + storageKeys[0].Value
+ ";EndpointSuffix=core.chinacloudapi.cn";
var account = CloudStorageAccount.Parse(storageConnectionString);
var serviceClient = account.CreateCloudBlobClient();
// Create container. Name must be lower case.
Console.WriteLine("Creating container...");
var container = serviceClient.GetContainerReference("helloazure");
container.CreateIfNotExistsAsync().Wait();
// Make the container public
var containerPermissions = new BlobContainerPermissions()
{ PublicAccess = BlobContainerPublicAccessType.Container };
container.SetPermissionsAsync(containerPermissions).Wait();
// write a blob to the container
Console.WriteLine("Uploading blob...");
var blob = container.GetBlockBlobReference("helloazure.txt");
blob.UploadTextAsync("Hello, Azure!").Wait();
Console.WriteLine("Your blob is located at {0}", blob.StorageUri.PrimaryUri);
// Wait for the user
Console.WriteLine("Press enter to continue...");
Console.ReadLine();
}

按 F5 運行程式,運行完成後。我們打開 Azure 門戶,來驗證文件是否已經上傳到 Azure 存儲中。

從 Azure 門戶中我們可以看到文件已經上傳到 Azure 存儲中了。

至此,您已經學會瞭如何使用 Azure .NET Management Libraries 來創建並管理一些重要的 Azure 資源啦!

後續步驟
更多 Azure .NET 示例:
虛擬機
Web 應用
SQL 資料庫

更多精彩乾貨 請點擊查看

歡迎有興趣的朋友多多交流
A究院研究生 [email protected]


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 0基一維數組的性能是最佳的.因為可以使用一些特殊的IL指令. 16.1 初始化數組元素 16.2 數組轉型 元素為 引用類型 的數組,如果 維數相同 ,且元素源類型到目標類型 存在隱式或顯式轉換 ,CLR 允許將數組元素從一種類型轉型另一種. CLR不允許將值類型元素的數組轉型為其他任何類型 ,不過 ...
  • 最近在抽取nopCommerce實現插件化的代碼來實現一個簡單的插件化開發模式的框架,後面發現訪問網頁的時候會出現“安全性異常”的錯誤。 錯誤截圖如下: 解決方案: 把Web.Config中的<trust level="Medium" />節點替換為<trust level="Full" origi ...
  • 1.首先是建審計存儲表 並建立實體 2.EF工作單元類的實現(百度有很多實現方式) 這裡的AuthUserModel是當前用戶類 3.採用Autofac.Extras.DynamicProxy實現AOP 不知道Autofac.Extras.DynamicProxy能不能直接作用在方法上? 使用Aud ...
  • 一、直接使用C#操作資料庫的類庫ADO.NET ADO.NET使用Connection對象來連接資料庫,使用Command或DataAdapter 對象來執行SQL語句,並將執行的結果返回給DataReader或DataAdapter,然後 再使用取得的DataReader或者DataAdapter ...
  • 泛型集合lisit<>優點1.性能高 對值類型使用非泛型集合類,在把值類型轉換為引用類型,和把引用類型轉換為值類型時,需要進行裝箱和拆箱的操作。裝箱和拆箱的操作很容易實現,但是性能損失較大, 假如使用泛型,就可以避免裝箱和拆箱操作。 此為集合。 ArrayList list=new ArrayLis ...
  • 經歷了很久,.net core 2.0 終於發佈了! 之前一直用的core 1.1,升級了2.0後發現認證的機制(Auth)發生了比較大的變化,在1.1中認證配置是在Configure中完成,而在2.0中,認證配置則是在ConfigureServices中完成,剛好對調了一下。 話不多說,直接看代碼 ...
  • 今天所有開發環境已經遷移到mac OS下的Visual Studio Code + 命令行編譯發佈,而運行伺服器是CentOS7,和windows沒什麼關聯了。 只要你Relese編譯併在本地有一個與伺服器相同的運行環境中運行成功了,遷移到真實伺服器不會有什麼難度。 下麵是遷移到 2.0 版本之後遇 ...
  • asp.net(c#)中String.Empty、NULL、"" 三者到底有啥區別和聯繫? ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...