{"action":"created","comment":{"url":"https://api.github.com/repos/aspnet/Docs/pulls/comments/30673720","id":30673720,"diff_hunk":"@@ -1,8 +1,127 @@\n-.. include:: /stub-topic.txt\n+Working with Multiple Environments\n+==================================\n \n-|stub-icon| Working with Multiple Environments\n-==============================================\n+By :ref:`Steve Smith <environments-author>` | Originally Published: 18 May 2015 \n \n-.. include:: /stub-notice.txt\n+ASP.NET 5 introduces improved support for controlling application behavior across multiple environments, such as development, staging, and production. Environment variables are used to indicate which environment the application is running in, allowing the app to be configured appropriately.\n \n-.. _issue: https://github.com/aspnet/Docs/issues/70\n\\ No newline at end of file\n+In this article:\n+\t- `Development, Staging, Production`_\n+\t- `Startup conventions`_\n+\t- `Environment variables`_\n+\n+`Browse or download samples on GitHub <https://github.com/aspnet/Docs/tree/master/docs/fundamentals/environments/sample>`_.\n+\n+Development, Staging, Production\n+--------------------------------\n+\n+ASP.NET 5 references a particular `environment variable <https://github.com/aspnet/Home/wiki/Environment-Variables>`_, ``ASPNET_ENV``, to describe the environment the application is currently running in. This variable can be set to any value you like, but three values are used by convention: ``Development``, ``Staging``, and ``Production``. You will find these values used in the samples and templates provided with ASP.NET 5. Since ASP.NET 5 is open source, you can easily view all usages of these three environment names by `searching the source code on GitHub <https://github.com/search?utf8=%E2%9C%93&q=staging+development+production+user%3Aaspnet&type=Code&ref=searchresults>`_.\n+\n+The current environment setting can be detected programmatically from within ASP.NET 5. In addition, ASP.NET MVC 6 introduces an `Environment Tag Helper <http://docs.asp.net/en/latest/mvc/views/tag-helpers/index.html>`_ that allows MVC Views to include certain sections based on the current application environment.\n+\n+.. note:: Like all environment variables, these values are case-insensitive. Whether you set the variable to ``Development`` or ``development`` or ``DEVELOPMENT`` the results will be the same.\n+\n+Development\n+^^^^^^^^^^^\n+\n+This should be the default environment used when developing an application. When using Visual Studio 2015, this setting is specified by default in the project's properties for IIS Express, as shown here:\n+\n+.. image:: environments/_static/project-properties-debug.png\n+\n+You can manually add this value to other profiles, such as ``web`` (defined by default as a command in ``project.json``). Once you modify the default settings created with the project, your changes are persisted in ``launchSettings.json`` in the ``Properties`` folder. After adding the ``ASPNET_ENV`` variable to the ``web`` profile with a value of ``Staging``, the ``launchSettings.js`` file in our sample project is shown below:\n+\n+.. literalinclude:: environments/sample/src/Environments/Properties/launchSettings.json\n+\t:language: javascript\n+\t:caption: launchSettings.json\n+\t:emphasize-lines: 7,13\n+\n+.. note:: Changes made to project profiles or to ``launchSettings.json`` directly will not take effect until the web server being used is restarted.\n+\n+Staging\n+^^^^^^^\n+\n+By convention, a ``Staging`` environment is a pre-production environment used for final testing before deployment to production. Ideally, its physical characteristics should mirror that of production, so that any issues that may arise in production occur first in the staging environment, where they can be addressed without impact to users.\n+\n+Production\n+^^^^^^^^^^\n+\n+The ``Production`` environment is the environment in which the application runs when it is live and being used by end users. This environment should be configured to maximize security, performance, and application robustness. Some common settings that a production environment might have that would differ from development include:\n+\n+- Turn on caching\n+- Ensure all client-side resources are bundled, minified, and potentially served from a CDN\n+- Turn off diagnostic ErrorPages\n+- Turn on friendly error pages\n+- Enable production logging and monitoring (e.g. AppInsights)\n+\n+This is by no means meant to be a complete list. It's best to avoid scattering environment checks in many parts of your application. Instead, the recommended approach is to perform such checks within the application's ``Startup`` class(es) wherever possible\n+\n+Startup conventions\n+-------------------\n+\n+ASP.NET 5 supports a convention-based approach to configuring an application's startup based on the current environment. You can also programmatically control how your application behaves according to which environment it is in, allowing you to create and manage your own conventions.\n+\n+When an ASP.NET 5 application starts, the ``Startup`` class is used to bootstrap the application, load its configuration settings, etc. (:doc:`learn more about ASP.NET startup <startup>`). However, if a class exists named ``Startup{EnvironmentName}``, e.g. ``StartupDevelopment``, and the ``ASPNET_ENV`` environment variable matches that name, then that ``Startup`` class is used instead. Thus, you could configure ``Startup`` for development, but have a separate ``StartupProduction`` that would be used when the app is run in production. Or vice versa.\n+\n+The following ``StartupDevelopment`` file from this articles sample project is run when the application is set to run in a Development environment:\n+\n+.. literalinclude:: environments/sample/src/Environments/StartupDevelopment.cs\n+\t:language: c#\n+\t:caption: StartupDevelopment.cs\n+\t:linenos:\n+\t:emphasize-lines: 5\n+\n+Run the application in development, and a welcome screen is displayed. The sample also includes a ``StartupStaging`` class:\n+\n+.. literalinclude:: environments/sample/src/Environments/StartupStaging.cs\n+\t:language: c#\n+\t:caption: StartupStaging.cs\n+\t:linenos:\n+\t:emphasize-lines: 6\n+\n+When the application is run with ``ASPNET_ENV`` set to ``Staging``, this ``Startup`` class is used, and the application will simply display a string stating it's running in a staging environment. The application's default ``Startup`` class will only run when ``ASPNET_ENV`` is not set to either ``Development`` or ``Staging`` (presumably, this would be when it is set to ``Production``, but you're not limited to only these three options. Also note that if no environment is set, the default ``Startup`` will run).\n+\n+In addition to using an entirely separate ``Startup`` class based on the current environment, you can also make adjustments to how the application is configured within a ``Startup`` class. The ASP.NET 5 web site template in Visual Studio uses this approach to load environment-specific configuration files (if present) and to customize the app's error handling settings. In both cases, this behavior is achieved by referring to the currently specified environment by calling ``EnvironmentName`` or ``IsEnvironment`` on an instance of ``IHostingEnvironment`` passed into the appropriate method.\n+\n+If you need to check whether the application is running in a particular environment, us ``env.IsEnvironment(\"environmentname\")`` since it will correctly ignore case (instead of checking if ``env.EnvironmentName == \"Development\"`` for example).\n+\n+.. literalinclude:: ../../samples/WebApplication1/src/WebApplication1/Startup.cs\n+\t:language: c#\n+\t:caption: Startup.cs (some parts removed for brevity)\n+\t:linenos:\n+\t:dedent: 4\n+\t:lines: 27-47,89-109,134-135\n+\t:emphasize-lines: 8,10-15,30-41\n+\n+The highlighted sections in the example above show several examples of adjusting application configuration based on environment.\n+\n+In the ``Startup()`` method (constructor), the configuration of the application is set up to optionally allow for environment-specific configuration files (e.g. ``config.Development.json``) that will override any other config settings (because the file is added last in the configuration setup chain - :doc:`learn more about ASP.NET configuration <configuration>`). A call to ``IsEnvironment()`` is also used to ensure that User Secrets are only configured for use in ``Development`` (learn more about User Secrets and the `Secret Manager <https://github.com/aspnet/Home/wiki/DNX-Secret-Configuration>`_).\n+\n+In ``Configure()``, the environment is checked once more, and if the app is running in a ``Development`` environment, then it enables BrowserLink and error pages (which typically should not be run in production). Otherwise, if the app is not running in a development environment, a standard error handling page is configured to be displayed in response to any unhandled exceptions.\n+\n+Environment variables\n+---------------------\n+\n+In addition to using Visual Studio's project properties and ``launchSettings.json`` file to set environment variables, you can of course manage environment variables yourself from the command line. On Windows, you can use ``set`` to view current environment variables, and ``set ASPNET_ENV=Development`` to set the current environment to development. You can filter the list by piping (using the ``|`` character) the result to ``findstr``. The following screenshot shows how to view the current ASPNET_ENV setting (if any), how to set it, and then how to run the sample application from the command prompt:\n+\n+.. image:: environments/_static/windows-command-environment.png\n+\n+On a Mac, you can do the same thing, using a slightly different set of commands. Open a Terminal window, and use ``export`` to see a list of currently configured environment variables. You can filter the result by piping it to ``grep``. Use ``export ASPNET_ENV=Development`` to set the variable, as shown.\n+\n+.. image:: environments/_static/mac-terminal-environment.png\n+\n+At this point you could launch the application, perhaps using ``Kestrel`` as your web server. :doc:`Learn more about developing ASP.NET applications on a Mac <../tutorials/your-first-mac-aspnet>`.\n+\n+Summary\n+-------\n+\n+ASP.NET 5 leverages the ``ASPNET_ENV`` environment variable to control how the application behaves in different environments. When publishing an application from development to staging to production, setting this variable appropriately for the environment allows for optimization of the application for debugging, testing, or production use, as appropriate.\n+\n+Additional Resources\n+--------------------\n+\n+- `Tag Helpers in ASP.NET MVC 6 <http://docs.asp.net/en/latest/mvc/views/tag-helpers/index.html>`_ including the Environment Tag Helper\n+- :doc:`Configuring ASP.NET 5 Applications <configuration>`","path":"docs/fundamentals/environments.rst","position":129,"original_position":129,"commit_id":"81e8330f7f02d992f051a21f0544abf48750e42d","original_commit_id":"81e8330f7f02d992f051a21f0544abf48750e42d","user":{"login":"danroth27","id":1874516,"avatar_url":"https://avatars.githubusercontent.com/u/1874516?v=3","gravatar_id":"","url":"https://api.github.com/users/danroth27","html_url":"https://github.com/danroth27","followers_url":"https://api.github.com/users/danroth27/followers","following_url":"https://api.github.com/users/danroth27/following{/other_user}","gists_url":"https://api.github.com/users/danroth27/gists{/gist_id}","starred_url":"https://api.github.com/users/danroth27/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danroth27/subscriptions","organizations_url":"https://api.github.com/users/danroth27/orgs","repos_url":"https://api.github.com/users/danroth27/repos","events_url":"https://api.github.com/users/danroth27/events{/privacy}","received_events_url":"https://api.github.com/users/danroth27/received_events","type":"User","site_admin":false},"body":"If you want the link to be the doc title then I think you can just do :doc:\\`configuration\\`","created_at":"2015-05-20T06:19:24Z","updated_at":"2015-05-20T06:19:24Z","html_url":"https://github.com/aspnet/Docs/pull/246#discussion_r30673720","pull_request_url":"https://api.github.com/repos/aspnet/Docs/pulls/246","_links":{"self":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/comments/30673720"},"html":{"href":"https://github.com/aspnet/Docs/pull/246#discussion_r30673720"},"pull_request":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/246"}}},"pull_request":{"url":"https://api.github.com/repos/aspnet/Docs/pulls/246","id":35664619,"html_url":"https://github.com/aspnet/Docs/pull/246","diff_url":"https://github.com/aspnet/Docs/pull/246.diff","patch_url":"https://github.com/aspnet/Docs/pull/246.patch","issue_url":"https://api.github.com/repos/aspnet/Docs/issues/246","number":246,"state":"open","locked":false,"title":"Environments","user":{"login":"ardalis","id":782127,"avatar_url":"https://avatars.githubusercontent.com/u/782127?v=3","gravatar_id":"","url":"https://api.github.com/users/ardalis","html_url":"https://github.com/ardalis","followers_url":"https://api.github.com/users/ardalis/followers","following_url":"https://api.github.com/users/ardalis/following{/other_user}","gists_url":"https://api.github.com/users/ardalis/gists{/gist_id}","starred_url":"https://api.github.com/users/ardalis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ardalis/subscriptions","organizations_url":"https://api.github.com/users/ardalis/orgs","repos_url":"https://api.github.com/users/ardalis/repos","events_url":"https://api.github.com/users/ardalis/events{/privacy}","received_events_url":"https://api.github.com/users/ardalis/received_events","type":"User","site_admin":false},"body":"Fixes issue #70 ","created_at":"2015-05-18T19:19:03Z","updated_at":"2015-05-20T06:19:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bf8ae6f8a6909a82fc7db0b8a81e0dbbd097aab3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/aspnet/Docs/pulls/246/commits","review_comments_url":"https://api.github.com/repos/aspnet/Docs/pulls/246/comments","review_comment_url":"https://api.github.com/repos/aspnet/Docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/aspnet/Docs/issues/246/comments","statuses_url":"https://api.github.com/repos/aspnet/Docs/statuses/81e8330f7f02d992f051a21f0544abf48750e42d","head":{"label":"ardalis:environments","ref":"environments","sha":"81e8330f7f02d992f051a21f0544abf48750e42d","user":{"login":"ardalis","id":782127,"avatar_url":"https://avatars.githubusercontent.com/u/782127?v=3","gravatar_id":"","url":"https://api.github.com/users/ardalis","html_url":"https://github.com/ardalis","followers_url":"https://api.github.com/users/ardalis/followers","following_url":"https://api.github.com/users/ardalis/following{/other_user}","gists_url":"https://api.github.com/users/ardalis/gists{/gist_id}","starred_url":"https://api.github.com/users/ardalis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ardalis/subscriptions","organizations_url":"https://api.github.com/users/ardalis/orgs","repos_url":"https://api.github.com/users/ardalis/repos","events_url":"https://api.github.com/users/ardalis/events{/privacy}","received_events_url":"https://api.github.com/users/ardalis/received_events","type":"User","site_admin":false},"repo":{"id":31719584,"name":"Docs","full_name":"ardalis/Docs","owner":{"login":"ardalis","id":782127,"avatar_url":"https://avatars.githubusercontent.com/u/782127?v=3","gravatar_id":"","url":"https://api.github.com/users/ardalis","html_url":"https://github.com/ardalis","followers_url":"https://api.github.com/users/ardalis/followers","following_url":"https://api.github.com/users/ardalis/following{/other_user}","gists_url":"https://api.github.com/users/ardalis/gists{/gist_id}","starred_url":"https://api.github.com/users/ardalis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ardalis/subscriptions","organizations_url":"https://api.github.com/users/ardalis/orgs","repos_url":"https://api.github.com/users/ardalis/repos","events_url":"https://api.github.com/users/ardalis/events{/privacy}","received_events_url":"https://api.github.com/users/ardalis/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ardalis/Docs","description":"Documentation for ASP.NET 5","fork":true,"url":"https://api.github.com/repos/ardalis/Docs","forks_url":"https://api.github.com/repos/ardalis/Docs/forks","keys_url":"https://api.github.com/repos/ardalis/Docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ardalis/Docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ardalis/Docs/teams","hooks_url":"https://api.github.com/repos/ardalis/Docs/hooks","issue_events_url":"https://api.github.com/repos/ardalis/Docs/issues/events{/number}","events_url":"https://api.github.com/repos/ardalis/Docs/events","assignees_url":"https://api.github.com/repos/ardalis/Docs/assignees{/user}","branches_url":"https://api.github.com/repos/ardalis/Docs/branches{/branch}","tags_url":"https://api.github.com/repos/ardalis/Docs/tags","blobs_url":"https://api.github.com/repos/ardalis/Docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ardalis/Docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ardalis/Docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/ardalis/Docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ardalis/Docs/statuses/{sha}","languages_url":"https://api.github.com/repos/ardalis/Docs/languages","stargazers_url":"https://api.github.com/repos/ardalis/Docs/stargazers","contributors_url":"https://api.github.com/repos/ardalis/Docs/contributors","subscribers_url":"https://api.github.com/repos/ardalis/Docs/subscribers","subscription_url":"https://api.github.com/repos/ardalis/Docs/subscription","commits_url":"https://api.github.com/repos/ardalis/Docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/ardalis/Docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/ardalis/Docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/ardalis/Docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/ardalis/Docs/contents/{+path}","compare_url":"https://api.github.com/repos/ardalis/Docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ardalis/Docs/merges","archive_url":"https://api.github.com/repos/ardalis/Docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ardalis/Docs/downloads","issues_url":"https://api.github.com/repos/ardalis/Docs/issues{/number}","pulls_url":"https://api.github.com/repos/ardalis/Docs/pulls{/number}","milestones_url":"https://api.github.com/repos/ardalis/Docs/milestones{/number}","notifications_url":"https://api.github.com/repos/ardalis/Docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ardalis/Docs/labels{/name}","releases_url":"https://api.github.com/repos/ardalis/Docs/releases{/id}","created_at":"2015-03-05T15:06:29Z","updated_at":"2015-03-05T15:06:29Z","pushed_at":"2015-05-19T12:31:24Z","git_url":"git://github.com/ardalis/Docs.git","ssh_url":"git@github.com:ardalis/Docs.git","clone_url":"https://github.com/ardalis/Docs.git","svn_url":"https://github.com/ardalis/Docs","homepage":null,"size":17223,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":0,"forks":2,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"aspnet:master","ref":"master","sha":"b56c84b20f7c02d8a5e9ab83750bd7ee91ba71eb","user":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"repo":{"id":28239455,"name":"Docs","full_name":"aspnet/Docs","owner":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/aspnet/Docs","description":"Documentation for ASP.NET 5","fork":false,"url":"https://api.github.com/repos/aspnet/Docs","forks_url":"https://api.github.com/repos/aspnet/Docs/forks","keys_url":"https://api.github.com/repos/aspnet/Docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aspnet/Docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aspnet/Docs/teams","hooks_url":"https://api.github.com/repos/aspnet/Docs/hooks","issue_events_url":"https://api.github.com/repos/aspnet/Docs/issues/events{/number}","events_url":"https://api.github.com/repos/aspnet/Docs/events","assignees_url":"https://api.github.com/repos/aspnet/Docs/assignees{/user}","branches_url":"https://api.github.com/repos/aspnet/Docs/branches{/branch}","tags_url":"https://api.github.com/repos/aspnet/Docs/tags","blobs_url":"https://api.github.com/repos/aspnet/Docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aspnet/Docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aspnet/Docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/aspnet/Docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aspnet/Docs/statuses/{sha}","languages_url":"https://api.github.com/repos/aspnet/Docs/languages","stargazers_url":"https://api.github.com/repos/aspnet/Docs/stargazers","contributors_url":"https://api.github.com/repos/aspnet/Docs/contributors","subscribers_url":"https://api.github.com/repos/aspnet/Docs/subscribers","subscription_url":"https://api.github.com/repos/aspnet/Docs/subscription","commits_url":"https://api.github.com/repos/aspnet/Docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/aspnet/Docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/aspnet/Docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/aspnet/Docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/aspnet/Docs/contents/{+path}","compare_url":"https://api.github.com/repos/aspnet/Docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aspnet/Docs/merges","archive_url":"https://api.github.com/repos/aspnet/Docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aspnet/Docs/downloads","issues_url":"https://api.github.com/repos/aspnet/Docs/issues{/number}","pulls_url":"https://api.github.com/repos/aspnet/Docs/pulls{/number}","milestones_url":"https://api.github.com/repos/aspnet/Docs/milestones{/number}","notifications_url":"https://api.github.com/repos/aspnet/Docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aspnet/Docs/labels{/name}","releases_url":"https://api.github.com/repos/aspnet/Docs/releases{/id}","created_at":"2014-12-19T17:38:02Z","updated_at":"2015-05-20T06:11:55Z","pushed_at":"2015-05-20T05:39:29Z","git_url":"git://github.com/aspnet/Docs.git","ssh_url":"git@github.com:aspnet/Docs.git","clone_url":"https://github.com/aspnet/Docs.git","svn_url":"https://github.com/aspnet/Docs","homepage":null,"size":19315,"stargazers_count":76,"watchers_count":76,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":63,"mirror_url":null,"open_issues_count":143,"forks":63,"open_issues":143,"watchers":76,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/246"},"html":{"href":"https://github.com/aspnet/Docs/pull/246"},"issue":{"href":"https://api.github.com/repos/aspnet/Docs/issues/246"},"comments":{"href":"https://api.github.com/repos/aspnet/Docs/issues/246/comments"},"review_comments":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/246/comments"},"review_comment":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/aspnet/Docs/pulls/246/commits"},"statuses":{"href":"https://api.github.com/repos/aspnet/Docs/statuses/81e8330f7f02d992f051a21f0544abf48750e42d"}}}}