{"id":15875,"date":"2017-11-10T14:00:00","date_gmt":"2017-11-10T14:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/premier_developer\/?p=15875"},"modified":"2019-02-21T09:45:07","modified_gmt":"2019-02-21T16:45:07","slug":"debugging-asp-core-on-linux-with-visual-studio-2017","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/premier-developer\/debugging-asp-core-on-linux-with-visual-studio-2017\/","title":{"rendered":"Debugging ASP Core on Linux with Visual Studio 2017"},"content":{"rendered":"<p>Today\u2019s post comes to us from Premier Developer consultant <a href=\"https:\/\/www.linkedin.com\/in\/randyrpatterson\/\" target=\"_blank\" rel=\"noopener\">Randy Patterson<\/a>.\u00a0 It\u2019s an excellent tutorial that walks you through setting up Visual Studio to remotely debug ASP.NET Core applications running on a Linux server.<\/p>\n<hr \/>\n<p><a href=\"https:\/\/www.microsoft.com\/net\/download\/core\">.NET Core<\/a> and specifically <a href=\"https:\/\/github.com\/aspnet\/Home\">ASP Core<\/a> is an Open Source, High Performance implementation of .NET that runs on Windows, Linux and Mac. After you deploy your web application to a Linux server it can be difficult to troubleshoot when issues arise. In this article, I\u2019ll show you how to configure your Linux test server and Development environment to allow remote debugging giving you all the greatness of debugging in Visual Studio while your code is running on a Linux server.<\/p>\n<p>What you\u2019ll need<\/p>\n<ul>\n<li>A Linux Virtual Machine running Ubuntu 16.04 server \u2013 GUI not required. For a complete list of supported Linux Distributions please see <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/core\/linux-prerequisites?tabs=netcore2x\">https:\/\/docs.microsoft.com\/en-us\/dotnet\/core\/linux-prerequisites?tabs=netcore2x<\/a><\/li>\n<li>Windows Developer Laptop with:\n<ul>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/install\/install-visual-studio\">Visual Studio 2017<\/a> Community edition or greater<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/net\/core#windowscmd\">.NET Core 2.0 SDK<\/a> Installed<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Install dependencies on the Linux test server<\/h2>\n<p>Many different distributions of Linux are supported but for this article will assume a fresh install of Ubuntu 16.04 server edition. In order for Visual Studio to remotely connect and debug .NET Core applications the Linux server will require an SSH Server for use by Visual Studio (more on this later) and Unzip and Curl packages installed to allow Visual Studio to install the correct version of the remote debugger.<\/p>\n<p>Log into the Linux test VM and issue the following commands:<\/p>\n<p><code>sudo apt-get update<\/code>\n<code>sudo apt-get install openssh-server unzip curl<\/code><\/p>\n<p><img decoding=\"async\" width=\"1154\" height=\"338\" class=\"wp-image-35265\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image.png 1154w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-300x88.png 300w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-768x225.png 768w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-1024x300.png 1024w\" sizes=\"(max-width: 1154px) 100vw, 1154px\" \/><\/p>\n<p>Next, install .NET Core SDK on the server:<\/p>\n<p>First, register the Microsoft signature key<\/p>\n<p><code>curl https:\/\/packages.microsoft.com\/keys\/microsoft.asc | gpg --dearmor &gt; microsoft.gpg<\/code><\/p>\n<p><code>sudo mv microsoft.gpg \/etc\/apt\/trusted.gpg.d\/microsoft.gpg<\/code><\/p>\n<p><code>sudo sh -c 'echo \"deb [arch=amd64] https:\/\/packages.microsoft.com\/repos\/microsoft-ubuntu-xenial-prod xenial main\" &gt; \/etc\/apt\/sources.list.d\/dotnetdev.list'<\/code><\/p>\n<p>Next, install the .NET Core SDK 2.0<\/p>\n<p><code>sudo apt-get update<\/code><\/p>\n<p><code>sudo apt-get install dotnet-sdk-2.0.0<\/code><\/p>\n<p>**For updated instructions or additional Linux distributions, see the official <a href=\"https:\/\/www.microsoft.com\/net\/core#linuxubuntu\">installation instructions<\/a><\/p>\n<p>Finally, verify the installation by issuing the following command to display the installed version of the .NET Core SDK<\/p>\n<p><code>dotnet --version<\/code><\/p>\n<p><img decoding=\"async\" width=\"1061\" height=\"181\" class=\"wp-image-35266\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-1.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-1.png 1061w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-1-300x51.png 300w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-1-768x131.png 768w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-1-1024x175.png 1024w\" sizes=\"(max-width: 1061px) 100vw, 1061px\" \/><\/p>\n<h2>Deploy application to your Linux VM<\/h2>\n<p>First, create a new ASP Core application by opening Visual Studio 2017<\/p>\n<ol>\n<li>Create a ASP Core Web Application<\/li>\n<li>Name the project <em>LinuxDebug<\/em><\/li>\n<li>Press OK<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"941\" height=\"653\" class=\"wp-image-35267\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-2.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-2.png 941w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-2-300x208.png 300w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-2-768x533.png 768w\" sizes=\"(max-width: 941px) 100vw, 941px\" \/><\/p>\n<ol>\n<li>On the next dialog make sure options are selected\n<ol>\n<li>.NET Core framework<\/li>\n<li>ASP Net Core 2.0<\/li>\n<li>Web Application (Model-View-Controller)<\/li>\n<li>Docker support is NOT Checked<\/li>\n<li>Authentication is set to <strong>No Authentication<\/strong><\/li>\n<li>Press OK<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"786\" height=\"513\" class=\"wp-image-35268\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-3.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-3.png 786w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-3-300x196.png 300w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-3-768x501.png 768w\" sizes=\"(max-width: 786px) 100vw, 786px\" \/><\/p>\n<p>The default behavior for Asp Core is to accept requests only from localhost. To change this, modify the program.cs file and add <strong>UseUrls(http:\/\/*:5000)<\/strong> to the webhost setup<\/p>\n<p><code>namespace LinuxDebug<\/code><\/p>\n<p><code>{<\/code><\/p>\n<p><code>public class Program<\/code><\/p>\n<p><code>{<\/code><\/p>\n<p><code>\u2026<\/code><\/p>\n<p><code>public static IWebHost BuildWebHost(string[] args) =&gt;<\/code><\/p>\n<p><code>WebHost.CreateDefaultBuilder(args)<\/code><\/p>\n<p><code>.UseStartup&lt;Startup&gt;()<\/code><\/p>\n<p><code>.UseUrls(\"http:\/\/*:5000\")<\/code><\/p>\n<p><code>.Build();<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p><code>}<\/code><\/p>\n<p>Next, publish the web application to a directory that contains the files needed to run the application on the Linux Test VM.<\/p>\n<ol>\n<li>Right click on the LinuxDebug Project in the Solution Explorer and select <strong>Publish\n<\/strong><img decoding=\"async\" width=\"348\" height=\"222\" class=\"wp-image-35269\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/build-rebuild-clean-pack-publish-bundler-and.png\" alt=\"Build Rebuild Clean Pack Publish... Bundler &amp; Minfier Overview File Nesting \" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/build-rebuild-clean-pack-publish-bundler-and.png 348w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/build-rebuild-clean-pack-publish-bundler-and-300x191.png 300w\" sizes=\"(max-width: 348px) 100vw, 348px\" \/><\/li>\n<li>Choose the Folder as the Publish Method and press Publish\n<img decoding=\"async\" width=\"753\" height=\"299\" class=\"wp-image-35270\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-4.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-4.png 753w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-4-300x119.png 300w\" sizes=\"(max-width: 753px) 100vw, 753px\" \/>\nAfter publish change the configuration to <strong>Debug <\/strong> by<\/p>\n<ol style=\"list-style-type: lower-alpha\">\n<li>Selecting Settings\n<img decoding=\"async\" width=\"708\" height=\"319\" class=\"wp-image-35271\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-5.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-5.png 708w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-5-300x135.png 300w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><\/li>\n<li>Change configuration to DEBUG<\/li>\n<li>The press Save. A debug build is necessary to step through the code using the remote debugger.<img decoding=\"async\" width=\"706\" height=\"558\" class=\"wp-image-35272\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-6.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-6.png 706w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-6-300x237.png 300w\" sizes=\"(max-width: 706px) 100vw, 706px\" \/><\/li>\n<li>Click Publish\n<img decoding=\"async\" width=\"492\" height=\"312\" class=\"wp-image-35273\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-7.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-7.png 492w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-7-300x190.png 300w\" sizes=\"(max-width: 492px) 100vw, 492px\" \/><\/li>\n<li>Copy the files from the publish directory (\\bin\\Debug\\PublishOutput\\) to a directory with execute permission on the Linux Test VM.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>Start the ASP Core Application on the Linux VM<\/h2>\n<p>Launch the ASP Core application and make sure everything runs on Linux without errors.<\/p>\n<ol>\n<li>Connect to Linux server using SSH<\/li>\n<li>Navigate to the directory the application was copied to<\/li>\n<li>At the command prompt type<\/li>\n<\/ol>\n<p><code>dotnet LinuxDebug.dll<\/code><\/p>\n<p>*The Linux operating system is case sensitive so make sure you use the proper case for the name of the dll.<\/p>\n<p><img decoding=\"async\" width=\"1060\" height=\"223\" class=\"wp-image-35274\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-8.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-8.png 1060w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-8-300x63.png 300w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-8-768x162.png 768w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-8-1024x215.png 1024w\" sizes=\"(max-width: 1060px) 100vw, 1060px\" \/><\/p>\n<ol start=\"4\">\n<li>Back on Windows, open up your favorite browser and navigate to the ip address of the Linux server followed by a \u201c:5000\u201d http:\/\/&lt;server_ip_address&gt;:5000<\/li>\n<li>After a few seconds you should see your web application.<\/li>\n<\/ol>\n<p>*If your Linux server has a firewall running you may need to update the rules to allow incoming connections on port 5000<\/p>\n<h2>Attach Debugger to ASP Core on Linux<\/h2>\n<p>Using Visual Studio running on Windows we will attach the debugger to an ASP Core application running on a remote Linux Server.<\/p>\n<p>First, you will need:<\/p>\n<ol>\n<li>An Asp Core application running on Linux<\/li>\n<li>The IP Address of the Linux Server running application<\/li>\n<li>A user on the Linux server that has permissions to\n<ol style=\"list-style-type: lower-alpha\">\n<li>Log into SSH<\/li>\n<li>Read\/Write access to home directory<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>In Visual Studio, click on the <strong><em>Debug<\/em><\/strong> menu item and select <strong><em>Attach To Process<\/em><\/strong><\/p>\n<p><img decoding=\"async\" width=\"588\" height=\"506\" class=\"wp-image-35275\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-9.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-9.png 588w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-9-300x258.png 300w\" sizes=\"(max-width: 588px) 100vw, 588px\" \/><\/p>\n<p>On the Attach To Process Dialog set the following properties<\/p>\n<ol>\n<li>Connection Type = SSH<\/li>\n<li>Connection Target = IP Address of your Linux Test VM (Press ENTER)<\/li>\n<li>Pressing enter on connection type displays the &#8220;Connect to Remote System&#8221; dialog box<\/li>\n<li>Enter the user name and password for a user that has SSH Access<\/li>\n<li>Press connect and if everything is entered correctly then you will see a list of processes on the Ubuntu server<\/li>\n<\/ol>\n<p>*If not already installed, Visual Studio will install the remote debugger into the user\u2019s home directory in a subfolder named <em>.vs-debugger<\/em><\/p>\n<p><img decoding=\"async\" width=\"856\" height=\"608\" class=\"wp-image-35276\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/attach-to-process-connection-type-connection-ta.png\" alt=\"Attach to Process Connection Type: Connection Target: Connection Type Informati SSH (Secure Shell) Transp Attach to: Available Processes P rocess Z] Show processes from 192.168.10.91 Connect to Remote System Use this dialog to connect to Linux, Mac, Windows, or other systems, using SSH. The connection added here can be used later for build or debugging, or in projects that use remote builds. Manage existing connections Find... ke shell (ex: Linux, macOS, etc). Host name: User name: Authentication type: Passwo rd: &lt; username &gt; Passwo rd Connect Cancel Filter Processes r Name Attach Session Refresh Cancel \" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/attach-to-process-connection-type-connection-ta.png 856w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/attach-to-process-connection-type-connection-ta-300x213.png 300w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/attach-to-process-connection-type-connection-ta-768x545.png 768w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/p>\n<p>Make sure the web application is running on the Ubuntu server and look for a process named &#8220;dotnet&#8221;<\/p>\n<ol>\n<li>Type \u201cdotnet\u201d to only show process names that begin with \u201cdotnet\u201d<\/li>\n<li>Locate the dotnet process running your application<\/li>\n<li>Press Attach<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"856\" height=\"608\" class=\"wp-image-35277\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-10.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-10.png 856w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-10-300x213.png 300w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-10-768x545.png 768w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/p>\n<p>Click \u201cManaged\u201d then click OK<\/p>\n<p><img decoding=\"async\" width=\"464\" height=\"248\" class=\"wp-image-35278\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/attach-to-dotnet-select-code-type-automatical.png\" alt=\"Attach to 'dotnet' - Select Code Type Automatically determine the type of code to debug @ Debug these code types: Managed (.NET Core for u nix) C] Natwe (GD8) Cancel \" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/attach-to-dotnet-select-code-type-automatical.png 464w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/attach-to-dotnet-select-code-type-automatical-300x160.png 300w\" sizes=\"(max-width: 464px) 100vw, 464px\" \/><\/p>\n<h3><a id=\"post-15875-_Toc492294326\"><\/a>Task 2: Step through code<\/h3>\n<ol>\n<li>Set a break point in the <strong>Home<\/strong> controller <strong>About<\/strong> action method<\/li>\n<li>Press the about link on the web site<\/li>\n<li>Step through the code running on the Linux server<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"1135\" height=\"660\" class=\"wp-image-35279\" src=\"http:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-11.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-11.png 1135w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-11-300x174.png 300w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-11-768x447.png 768w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2017\/11\/word-image-11-1024x595.png 1024w\" sizes=\"(max-width: 1135px) 100vw, 1135px\" \/><\/p>\n<p>The debug experience on a remote Linux server is similar to developing on a local Windows server. Visual Studio has excellent support for debugging your applications on Linux machines but it is less than intuitive to setup the first time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>NET Core and specifically ASP Core is an Open Source, High Performance implementation of .NET that runs on Windows, Linux and Mac. After you deploy your web application to a Linux server it can be difficult to troubleshoot when issues arise. In this article, I\u2019ll show you how to configure your Linux test server and Development environment to allow remote debugging giving you all the greatness of debugging in Visual Studio while your code is running on a Linux server.<\/p>\n","protected":false},"author":582,"featured_media":37840,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[80,55],"tags":[83,61,118,27,314,3,46],"class_list":["post-15875","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","category-web","tag-net-core","tag-asp-net-core","tag-debugging","tag-linux","tag-randy-patterson","tag-team","tag-visual-studio"],"acf":[],"blog_post_summary":"<p>NET Core and specifically ASP Core is an Open Source, High Performance implementation of .NET that runs on Windows, Linux and Mac. After you deploy your web application to a Linux server it can be difficult to troubleshoot when issues arise. In this article, I\u2019ll show you how to configure your Linux test server and Development environment to allow remote debugging giving you all the greatness of debugging in Visual Studio while your code is running on a Linux server.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts\/15875","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/users\/582"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/comments?post=15875"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts\/15875\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/media\/37840"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/media?parent=15875"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/categories?post=15875"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/tags?post=15875"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}