├── .gitignore
├── .openpublishing.publish.config.json
├── .openpublishing.redirection.json
├── LICENSE
├── LICENSE-CODE
├── README.md
├── ThirdPartyNotices
└── previous-versions
└── sandbox
├── TOC.yml
├── breadcrumb
└── toc.yml
├── demos
├── github-release-notes.md
├── index.yml
├── media
│ ├── github-release-notes
│ │ ├── addgithubwebhook.png
│ │ ├── addqueue.png
│ │ ├── appsettings.png
│ │ ├── blobcontainer.png
│ │ ├── exp_release.png
│ │ ├── functionurl.png
│ │ ├── monitorfunction.png
│ │ ├── newcontainer.png
│ │ ├── newghapplication.png
│ │ ├── projectjson.png
│ │ ├── redeliverwebhook.png
│ │ ├── renderednotes.png
│ │ └── storageaccesskeys.png
│ ├── notbacon
│ │ ├── add-bacon-images.png
│ │ ├── add-images-custom-vision.png
│ │ ├── add-not-bacon-images.png
│ │ ├── azuredeploy-finish.png
│ │ ├── azuredeploy-start.png
│ │ ├── click-train.png
│ │ ├── create-custom-vision-project.png
│ │ ├── grab-keys.png
│ │ ├── not-bacon.gif
│ │ ├── set-default.png
│ │ └── test-model.png
│ ├── nothotdog
│ │ ├── api-key.png
│ │ ├── azure-deploy.png
│ │ ├── get-api-key.png
│ │ ├── new-function.PNG
│ │ ├── new-item.PNG
│ │ └── new-project.png
│ └── octobot
│ │ ├── azure-config.png
│ │ ├── azure-deploy.png
│ │ ├── bot-keys.png
│ │ ├── demo.gif
│ │ ├── github-keys.png
│ │ ├── import.png
│ │ ├── index.png
│ │ ├── luis-appid.png
│ │ ├── luis-key.png
│ │ └── luis-publish.png
├── notbacon.md
├── nothotdog.md
└── octobot.md
├── docfx.json
├── functions-recipes
├── .DS_Store
├── cli.md
├── cosmos-db.md
├── development-environment.md
├── durable-diagnostics.md
├── durable-functions.md
├── durable-manage-orchestrations.md
├── durable-setup.md
├── environment-variables.md
├── functions-basics.md
├── hostjson.md
├── http-and-webhooks.md
├── includes
│ ├── cli-function-cli.md
│ ├── cli-publish-locally.md
│ ├── cosmos-db-documentdbclient.md
│ ├── cosmos-db-id.md
│ ├── cosmos-db-livemigration.md
│ ├── cosmos-db-outputcollector.md
│ ├── cosmos-db-sqlquery.md
│ ├── cosmos-db-staticclient.md
│ ├── durable-activity-functions-errors.md
│ ├── durable-activity-functions-with-retry.md
│ ├── durable-authoring-activities.md
│ ├── durable-authoring-orchestrators.md
│ ├── durable-http-api.md
│ ├── durable-instance-id.md
│ ├── durable-logging.md
│ ├── durable-querying-status.md
│ ├── durable-signaling-events.md
│ ├── durable-starting-orchestrations.md
│ ├── durable-terminating-orchestrations.md
│ ├── environment-variables-accessing-settings.md
│ ├── hostjson-queues.md
│ ├── hostjson-timeout.md
│ ├── http-accessing-querystrings.md
│ ├── http-accessing-request-body.md
│ ├── http-github-comment-webhook.md
│ ├── http-restricting-http-verbs.md
│ ├── http-security-keys.md
│ ├── logging-ilogger.md
│ ├── logging-tracewriter.md
│ ├── logging-using-third-party-logger.md
│ ├── manual-trigger.md
│ ├── portal-environment-controlling-http-verbs.md
│ ├── portal-environment-daily-usage-quota.md
│ ├── portal-environment-keys.md
│ ├── portal-functions-in-portal.md
│ ├── proxies-conditional-responses.md
│ ├── proxies-mock-api.md
│ ├── proxies-proxies-json.md
│ ├── proxies-redirects.md
│ ├── proxies-variables.md
│ ├── queue-storage-basic-output-queue.md
│ ├── queue-storage-basic-queue-trigger.md
│ ├── queue-storage-output-queue-collectors.md
│ ├── queue-storage-poision-queue-messages.md
│ ├── queue-storage-queue-trigger-with-poco.md
│ ├── queue-storage-retrieving-queue-metadata.md
│ ├── read-more-heading.md
│ ├── routes-azureportal.md
│ ├── routes-infunction.md
│ ├── routes-optionalparameters.md
│ ├── routes-prefixes.md
│ ├── routes-routeparameters.md
│ ├── service-bus-basic-servicebus-output.md
│ ├── service-bus-output-collectors.md
│ ├── service-bus-retrieving-servicebus-queue-metadata.md
│ ├── service-bus-trigger.md
│ ├── table-storage-input-binding.md
│ ├── takeaways-heading.md
│ ├── timer-trigger.md
│ ├── visual-studio-function-tools.md
│ └── vscode-function-tools.md
├── index.yml
├── logging.md
├── manual.md
├── media
│ ├── azure-funtion-vs-ext.png
│ ├── azure-funtion-vscode-ext.png
│ ├── create-function-app-portal.png
│ ├── create-function-portal.png
│ ├── function-app-settings.png
│ ├── function-overview.png
│ ├── function-portal.png
│ ├── integrate-http-methods.png
│ ├── integrate-tab.png
│ ├── integratepage.png
│ ├── integratetab.png
│ ├── manage-page.png
│ └── manage-tab.png
├── portal.md
├── proxies.md
├── queue-storage.md
├── routes.md
├── service-bus.md
├── table-storage.md
├── timer.md
├── triggers-bindings.md
├── visual-studio.md
└── vscode.md
├── gamedev
├── azure-gaming-samples.md
├── index.yml
├── media
│ ├── event-hubs-connectionstring.png
│ ├── event-hubs-name.png
│ ├── mobile-apps-uri.png
│ ├── monogame.png
│ ├── storage-keys.png
│ ├── unity.png
│ └── unreal.png
├── monogame
│ ├── azure-monogame.md
│ └── media
│ │ └── monogame-storage-nuget.png
├── unity
│ ├── azure-event-hubs-unity-2017.md
│ ├── azure-event-hubs-unity.md
│ ├── azure-mobile-apps-unity-2017.md
│ ├── azure-mobile-apps-unity.md
│ ├── azure-storage-unity-2017.md
│ ├── azure-storage-unity.md
│ ├── include
│ │ ├── unity-import-2017.md
│ │ ├── unity-import.md
│ │ └── uwp-known-issues.md
│ ├── media
│ │ ├── unity-player-config-2018.png
│ │ ├── unity-player-config.png
│ │ ├── unity-player-menu.png
│ │ ├── unity-select-dlls.png
│ │ ├── unity-wsaplayer-exclude.png
│ │ └── unity-wsaplayer-include.png
│ ├── nuget2unity.md
│ └── samples
│ │ ├── azure-facebook-auth-unity.md
│ │ ├── azure-mobile-apps-unity-racer.md
│ │ ├── azure-storage-bird.md
│ │ ├── include
│ │ └── racer_configure-easy-tables.md
│ │ └── media
│ │ ├── azstbird_blobs.png
│ │ ├── azstbird_connectionstring.png
│ │ ├── azstbird_downloading-assets.png
│ │ ├── azstbird_newproject.png
│ │ ├── azstbird_title-screen.png
│ │ ├── azstbird_unity-player-config.png
│ │ ├── fbauth_add-domain.png
│ │ ├── fbauth_add-path-vars.png
│ │ ├── fbauth_add-project-file.png
│ │ ├── fbauth_add-sample-scenes.png
│ │ ├── fbauth_android-debug-keystore-missing-cropped.png
│ │ ├── fbauth_android-debug-keystore-missing.png
│ │ ├── fbauth_android-fb-settings.png
│ │ ├── fbauth_app-url.png
│ │ ├── fbauth_basic-settings.png
│ │ ├── fbauth_bundleid.png
│ │ ├── fbauth_change-package-name.png
│ │ ├── fbauth_copy-functionapp-url.png
│ │ ├── fbauth_cors.png
│ │ ├── fbauth_create-function-app.png
│ │ ├── fbauth_create-function1.png
│ │ ├── fbauth_defaulthostkey.png
│ │ ├── fbauth_download-openssl.png
│ │ ├── fbauth_edit-path-var.png
│ │ ├── fbauth_fb-add-platform.png
│ │ ├── fbauth_fb-add-product.png
│ │ ├── fbauth_fb-android-settings.png
│ │ ├── fbauth_fb-auth-heading.png
│ │ ├── fbauth_fb-id-secret.png
│ │ ├── fbauth_fb-login.png
│ │ ├── fbauth_fbios.png
│ │ ├── fbauth_import-fbsdk-unitypackage.png
│ │ ├── fbauth_keytool-not-found.png
│ │ ├── fbauth_mobile-app-facebook-settings.png
│ │ ├── fbauth_new-fb-app.png
│ │ ├── fbauth_new-function-app.png
│ │ ├── fbauth_new-function.png
│ │ ├── fbauth_open-environment-vars.png
│ │ ├── fbauth_open-fbsdk-settings.png
│ │ ├── fbauth_openssl-not-found-cropped.png
│ │ ├── fbauth_openssl-not-found.png
│ │ ├── fbauth_packages-added.png
│ │ ├── fbauth_platformfeatures-cors.png
│ │ ├── fbauth_search-environment-vars.png
│ │ ├── fbauth_select-easy-table.png
│ │ ├── fbauth_set-easy-tables-permissions.png
│ │ ├── fbauth_test-login.png
│ │ ├── fbauth_website-platform-settings.png
│ │ ├── fbauth_website.png
│ │ ├── vstu_azure-configure-easy-tables-image1.png
│ │ ├── vstu_azure-configure-easy-tables-image10.png
│ │ ├── vstu_azure-configure-easy-tables-image2.png
│ │ ├── vstu_azure-configure-easy-tables-image3.png
│ │ ├── vstu_azure-configure-easy-tables-image4.png
│ │ ├── vstu_azure-configure-easy-tables-image5.png
│ │ ├── vstu_azure-configure-easy-tables-image6.png
│ │ ├── vstu_azure-configure-easy-tables-image7.png
│ │ ├── vstu_azure-configure-easy-tables-image8.png
│ │ ├── vstu_azure-configure-easy-tables-image9.1.png
│ │ ├── vstu_azure-configure-easy-tables-image9.2.png
│ │ ├── vstu_azure-configure-easy-tables-image9.png
│ │ ├── vstu_azure-implement-azure-mobileserviceclient-image1.png
│ │ ├── vstu_azure-implement-azure-mobileserviceclient-image2.png
│ │ ├── vstu_azure-implement-azure-mobileserviceclient-image3.png
│ │ ├── vstu_azure-import-sample-assets-image1.png
│ │ ├── vstu_azure-import-sample-assets-image2.png
│ │ ├── vstu_azure-leaderboard-explanation-image1.png
│ │ ├── vstu_azure-prepare-dev-environment-image0.png
│ │ ├── vstu_azure-prepare-dev-environment-image1.2.png
│ │ ├── vstu_azure-prepare-dev-environment-image1.png
│ │ ├── vstu_azure-prepare-dev-environment-image2.png
│ │ ├── vstu_azure-prepare-dev-environment-image3.png
│ │ ├── vstu_azure-prepare-dev-environment-image4.png
│ │ ├── vstu_azure-prepare-dev-environment-image5.png
│ │ ├── vstu_azure-prepare-dev-environment-image6.png
│ │ ├── vstu_azure-prepare-dev-environment-image7.png
│ │ ├── vstu_azure-prepare-dev-environment-image8.png
│ │ ├── vstu_azure-prepare-dev-environment-image9.png
│ │ ├── vstu_azure-racescene-explanation-image1.png
│ │ ├── vstu_azure-racescene-explanation-image2.png
│ │ ├── vstu_azure-setup-table-schema-image1.png
│ │ ├── vstu_azure-setup-table-schema-image10.png
│ │ ├── vstu_azure-setup-table-schema-image11.png
│ │ ├── vstu_azure-setup-table-schema-image12.png
│ │ ├── vstu_azure-setup-table-schema-image13.png
│ │ ├── vstu_azure-setup-table-schema-image14.png
│ │ ├── vstu_azure-setup-table-schema-image15.png
│ │ ├── vstu_azure-setup-table-schema-image2.png
│ │ ├── vstu_azure-setup-table-schema-image3.png
│ │ ├── vstu_azure-setup-table-schema-image4.png
│ │ ├── vstu_azure-setup-table-schema-image5.png
│ │ ├── vstu_azure-setup-table-schema-image6.png
│ │ ├── vstu_azure-setup-table-schema-image7.png
│ │ ├── vstu_azure-setup-table-schema-image8.png
│ │ ├── vstu_azure-setup-table-schema-image9.png
│ │ ├── vstu_azure-test-client-connection-image1.png
│ │ ├── vstu_azure-test-sample-game-image1.png
│ │ ├── vstu_azure-test-sample-game-image2.png
│ │ ├── vstu_azure-test-sample-game-image3.png
│ │ ├── vstu_azure-test-sample-game-image4.png
│ │ ├── vstu_azure-test-sample-game-image5.png
│ │ ├── vstu_configure_open_in_visual_studio.png
│ │ ├── vstu_configure_unity_import_vstu.png
│ │ ├── vstu_connection_connected.png
│ │ ├── vstu_connection_to_unity.png
│ │ ├── vstu_debugging_attach_unity_debugger.png
│ │ ├── vstu_debugging_build_settings.png
│ │ ├── vstu_debugging_dll_add_existing.png
│ │ ├── vstu_debugging_dll_target_framework.png
│ │ ├── vstu_monobehavior_wizard_full.png
│ │ ├── vstu_monobehavior_wizard_quick.png
│ │ ├── vstu_overview.png
│ │ ├── vstu_unity_project_explorer.png
│ │ └── vstu_view_unity_project_explorer.png
└── unreal
│ └── azure-storage-unreal.md
├── includes
└── header.md
├── index.yml
├── media
├── bit_sandbox1024.png
├── bit_sandbox768.png
├── buttons
│ ├── deploy.png
│ ├── deploy2.png
│ ├── source.png
│ ├── source2.png
│ ├── try.png
│ └── try2.png
└── template
│ └── Bit_No_Shadow.png
└── template.md
/.gitignore:
--------------------------------------------------------------------------------
1 | log/
2 | obj/
3 | _site/
4 | .optemp/
5 | _themes*/
6 |
7 | .openpublishing.buildcore.ps1
--------------------------------------------------------------------------------
/.openpublishing.publish.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "need_generate_pdf": false,
3 | "need_generate_intellisense": false,
4 | "docsets_to_publish": [
5 | {
6 | "docset_name": "sandbox",
7 | "build_source_folder": "previous-versions/sandbox",
8 | "build_output_subfolder": "previous-versions/sandbox",
9 | "locale": "en-us",
10 | "monikers": [],
11 | "moniker_ranges": [],
12 | "open_to_public_contributors": false,
13 | "type_mapping": {
14 | "Conceptual": "Content",
15 | "ManagedReference": "Content",
16 | "LandingData": "Content",
17 | "RestApi": "Content"
18 | },
19 | "build_entry_point": "docs",
20 | "template_folder": "_themes",
21 | "version": 0
22 | }
23 | ],
24 | "notification_subscribers": [],
25 | "branches_to_filter": [],
26 | "skip_source_output_uploading": false,
27 | "need_preview_pull_request": true,
28 | "dependent_repositories": [
29 | {
30 | "path_to_root": "_themes",
31 | "url": "https://github.com/Microsoft/templates.docs.msft",
32 | "branch": "master",
33 | "branch_mapping": {}
34 | }
35 | ],
36 | "need_generate_pdf_url_template": false
37 | }
--------------------------------------------------------------------------------
/.openpublishing.redirection.json:
--------------------------------------------------------------------------------
1 | {
2 | "redirections": [
3 | {
4 | "source_path": "sandbox/demos/githubbot.md",
5 | "redirect_url": "/sandbox/demos/octobot",
6 | "redirect_document_id": true
7 | },
8 | {
9 | "source_path": "sandbox/gamedev/monogame/azure-storage-monogame.md",
10 | "redirect_url": "/sandbox/gamedev/monogame/azure-monogame",
11 | "redirect_document_id": true
12 | }
13 | ]
14 | }
--------------------------------------------------------------------------------
/LICENSE-CODE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright (c) Microsoft Corporation
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
5 | associated documentation files (the "Software"), to deal in the Software without restriction,
6 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
8 | subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all copies or substantial
11 | portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
14 | NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
15 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
16 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
17 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Sandbox Overview
2 | The Sandbox is an area of [docs.microsoft.com](https://docs.microsoft.com/) that is designed to be a sandbox, meaning a place where we can experiment, play with new technology, and get feedback on ideas.
3 |
4 | ## Sandbox Expectations
5 | Sandbox content isn't guaranteed to be kept up-to-date, maintained, or even work :) Content may be deleted or heavily revised at any time. Community contributions and feedback are of course welcome!
6 |
7 | ## Microsoft Open Source Code of Conduct
8 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
9 | For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
10 |
11 |
--------------------------------------------------------------------------------
/ThirdPartyNotices:
--------------------------------------------------------------------------------
1 | ##Legal Notices
2 | Microsoft and any contributors grant you a license to the Microsoft documentation and other content
3 | in this repository under the [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/legalcode),
4 | see the [LICENSE](LICENSE) file, and grant you a license to any code in the repository under the [MIT License](https://opensource.org/licenses/MIT), see the
5 | [LICENSE-CODE](LICENSE-CODE) file.
6 |
7 | Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation
8 | may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries.
9 | The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks.
10 | Microsoft's general trademark guidelines can be found at https://go.microsoft.com/fwlink/?LinkID=254653.
11 |
12 | Privacy information can be found at https://privacy.microsoft.com/
13 |
14 | Microsoft and any contributors reserve all others rights, whether under their respective copyrights, patents,
15 | or trademarks, whether by implication, estoppel or otherwise.
--------------------------------------------------------------------------------
/previous-versions/sandbox/TOC.yml:
--------------------------------------------------------------------------------
1 | - name: The Sandbox
2 | href: index.yml
3 | items:
4 | - name: Demos
5 | expanded: true
6 | href: demos/index.yml
7 | items:
8 | - name: OctoBot
9 | href: demos/octobot.md
10 | - name: NotBacon
11 | href: demos/notbacon.md
12 | - name: NotHotdog
13 | href: demos/nothotdog.md
14 | - name: GitHub Release Notes Generator
15 | href: demos/github-release-notes.md
16 | - name: Game Development
17 | expanded: true
18 | href: gamedev/index.yml
19 | items:
20 | - name: Unity
21 | expanded: false
22 | items:
23 | - name: SDKs
24 | expanded: false
25 | items:
26 | - name: Azure Event Hubs SDK
27 | href: gamedev/unity/azure-event-hubs-unity.md
28 | - name: Azure Mobile Apps SDK
29 | href: gamedev/unity/azure-mobile-apps-unity.md
30 | - name: Azure Storage SDK
31 | href: gamedev/unity/azure-storage-unity.md
32 | - name: Samples
33 | expanded: false
34 | items:
35 | - name: Easy Tables with Unity and the Mobile Apps SDK
36 | href: gamedev/unity/samples/azure-mobile-apps-unity-racer.md
37 | - name: Azure Storage Bird
38 | href: gamedev/unity/samples/azure-storage-bird.md
39 | - name: Facebook Authentication with Unity and Azure
40 | href: gamedev/unity/samples/azure-facebook-auth-unity.md
41 | - name: NuGet2Unity
42 | href: gamedev/unity/nuget2unity.md
43 | - name: Unreal Engine
44 | expanded: false
45 | items:
46 | - name: SDKs
47 | expanded: false
48 | items:
49 | - name: Azure Storage SDK
50 | href: gamedev/unreal/azure-storage-unreal.md
51 | - name: MonoGame
52 | expanded: false
53 | items:
54 | - name: Using Azure SDKs with MonoGame
55 | href: gamedev/monogame/azure-monogame.md
56 | - name: Other
57 | expanded: false
58 | items:
59 | - name: Additional samples and tools for Azure Gaming
60 | href: gamedev/azure-gaming-samples.md
61 | - name: Azure Functions Recipes
62 | expanded: false
63 | href: functions-recipes/index.yml
64 | items:
65 | - name: Functions Basics
66 | href: functions-recipes/functions-basics.md
67 | - name: Triggers and Bindings
68 | href: functions-recipes/triggers-bindings.md
69 | - name: Development Environment
70 | href: functions-recipes/development-environment.md
71 | - name: Durable Functions
72 | href: functions-recipes/durable-functions.md
--------------------------------------------------------------------------------
/previous-versions/sandbox/breadcrumb/toc.yml:
--------------------------------------------------------------------------------
1 | - name: The Sandbox
2 | tocHref: /previous-versions/sandbox/
3 | topicHref: /previous-versions/sandbox/
4 | items:
5 | - name: Previous Versions
6 | tocHref: /previous-versions/
7 | topicHref: /previous-versions/
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/index.yml:
--------------------------------------------------------------------------------
1 | ### YamlMime:Landing
2 |
3 | title: Sandbox demos documentation # < 60 chars
4 | summary: Introduce Sandbox demos using various Azure services. # < 160 chars
5 |
6 | metadata:
7 | title: Sandbox demos documentation # Required; page title displayed in search results. Include the brand. < 60 chars.
8 | description: Introduce Sandbox demos using various Azure services. # Required; article description that is displayed in search results. < 160 chars.
9 | ms.service: multiple #Required; service per approved list. service slug assigned to your service by ACOM.
10 | ms.topic: landing-page # Required
11 | author: brianpeek #Required; your GitHub user alias, with correct capitalization.
12 | ms.author: brianpeek #Required; microsoft alias of author; optional team alias.
13 | ms.date: 11/08/2017 #Required; mm/dd/yyyy format.
14 |
15 | # linkListType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | sample | tutorial | video | whats-new
16 |
17 | landingContent:
18 | # Cards and links should be based on top customer tasks or top subjects
19 | # Start card title with a verb
20 | # Card (optional)
21 | - title: Demos
22 | linkLists:
23 | - linkListType: overview
24 | links:
25 | - text: OctoBot
26 | url: octobot.md
27 | - text: NotBacon
28 | url: notbacon.md
29 | - text: NotHotdog
30 | url: nothotdog.md
31 | - text: GitHub Release Notes Generator
32 | url: github-release-notes.md
33 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/addgithubwebhook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/addgithubwebhook.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/addqueue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/addqueue.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/appsettings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/appsettings.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/blobcontainer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/blobcontainer.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/exp_release.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/exp_release.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/functionurl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/functionurl.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/monitorfunction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/monitorfunction.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/newcontainer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/newcontainer.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/newghapplication.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/newghapplication.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/projectjson.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/projectjson.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/redeliverwebhook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/redeliverwebhook.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/renderednotes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/renderednotes.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/github-release-notes/storageaccesskeys.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/github-release-notes/storageaccesskeys.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/add-bacon-images.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/add-bacon-images.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/add-images-custom-vision.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/add-images-custom-vision.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/add-not-bacon-images.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/add-not-bacon-images.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/azuredeploy-finish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/azuredeploy-finish.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/azuredeploy-start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/azuredeploy-start.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/click-train.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/click-train.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/create-custom-vision-project.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/create-custom-vision-project.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/grab-keys.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/grab-keys.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/not-bacon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/not-bacon.gif
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/set-default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/set-default.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/notbacon/test-model.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/notbacon/test-model.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/nothotdog/api-key.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/nothotdog/api-key.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/nothotdog/azure-deploy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/nothotdog/azure-deploy.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/nothotdog/get-api-key.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/nothotdog/get-api-key.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/nothotdog/new-function.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/nothotdog/new-function.PNG
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/nothotdog/new-item.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/nothotdog/new-item.PNG
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/nothotdog/new-project.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/nothotdog/new-project.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/octobot/azure-config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/octobot/azure-config.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/octobot/azure-deploy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/octobot/azure-deploy.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/octobot/bot-keys.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/octobot/bot-keys.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/octobot/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/octobot/demo.gif
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/octobot/github-keys.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/octobot/github-keys.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/octobot/import.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/octobot/import.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/octobot/index.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/octobot/index.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/octobot/luis-appid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/octobot/luis-appid.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/octobot/luis-key.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/octobot/luis-key.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/demos/media/octobot/luis-publish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/demos/media/octobot/luis-publish.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/docfx.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "content": [
4 | {
5 | "files": [
6 | "**/*.md",
7 | "**/*.yml"
8 | ],
9 | "exclude": [
10 | "**/obj/**",
11 | "**/includes/**",
12 | "README.md",
13 | "LICENSE",
14 | "LICENSE-CODE",
15 | "ThirdPartyNotices"
16 | ]
17 | }
18 | ],
19 | "resource": [
20 | {
21 | "files": [
22 | "**/*.png",
23 | "**/*.jpg",
24 | "**/*.svg",
25 | "**/*.gif"
26 | ],
27 | "exclude": [
28 | "**/obj/**",
29 | "**/includes/**"
30 | ]
31 | }
32 | ],
33 | "overwrite": [],
34 | "externalReference": [],
35 | "globalMetadata": {
36 | "ROBOTS": "NOINDEX,NOFOLLOW",
37 | "is_archived": true,
38 | "breadcrumb_path": "/previous-versions/sandbox/breadcrumb/toc.json",
39 | "feedback_system": "None",
40 | "docs_archive": "manual"
41 | },
42 | "fileMetadata": {},
43 | "template": [],
44 | "dest": "sandbox"
45 | }
46 | }
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/.DS_Store
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/cli.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Azure Functions CLI | Microsoft Docs
3 | description: Tips and tricks for using the Azure Functions CLI
4 | author: paladique
5 | manager: scottca
6 | keywords: azure functions, functions, cli, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: jasmineg
12 | ---
13 |
14 | # Azure Functions CLI
15 |
16 | [!include[](includes/cli-function-cli.md)]
17 |
18 | [!include[](includes/cli-publish-locally.md)]
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/cosmos-db.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Cosmos DB | Microsoft Docs
3 | description: Tips and tricks for using Azure Functions with Cosmos DB
4 | author: anthonychu
5 | manager: scottca
6 | keywords: azure functions, functions, cosmos db, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.workload: na
11 | ms.date: 03/27/2018
12 | ms.author: antchu
13 | ---
14 |
15 | # Cosmos DB (DocumentDB) Bindings
16 |
17 | [!include[](includes/cosmos-db-id.md)]
18 |
19 | [!include[](includes/cosmos-db-sqlquery.md)]
20 |
21 | [!include[](includes/cosmos-db-outputcollector.md)]
22 |
23 | [!include[](includes/cosmos-db-livemigration.md)]
24 |
25 | [!include[](includes/cosmos-db-documentdbclient.md)]
26 |
27 | [!include[](includes/cosmos-db-staticclient.md)]
28 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/development-environment.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Development environment
3 | description: Description
4 | author: CecilPhillip
5 | manager: scottca
6 | keywords:
7 | ms.topic: article
8 | ms.date: 12/11/2017
9 | ms.author: cephilli
10 | ms.devlang: csharp
11 | ms.service: functions
12 | ---
13 |
14 | # Development environment
15 |
16 | [!include[](../includes/header.md)]
17 |
18 | | | |
19 | |---|---|
20 | |
Portal | |
21 | [Working with Functions in the Azure portal](portal.md#working-with-functions-in-the-azure-portal) | Create an edit a function app in the Azure portal
22 | [Allowing HTTP verbs in the Azure portal](portal.md#allowing-http-verbs-in-the-azure-portal) | Restrict the HTTP verbs that trigger a function using the Azure portal
23 | [Getting your function and host keys in the Azure portal](portal.md#getting-your-function-and-host-keys-in-the-azure-portal) | Retrieve keys in the Azure portal
24 | [Controlling how much your function can run in one day](portal.md#controlling-how-much-your-function-can-run-in-one-day) | Set a daily usage quota for a function app
25 | |Visual Studio | |
26 | [Installing Visual Studio Functions Tools](visual-studio.md#installing-visual-studio-functions-tools) | Install the Functions Tools extension in Visual Studio
27 | |Visual Studio Code | |
28 | [Installing Visual Studio Code Functions Tools](vscode.md#installing-visual-studio-code-functions-tools) | Install the Functions Tools extension in VS Code
29 | |CLI | |
30 | [Testing functions with Azure Functions Core Tools](cli.md#testing-functions-with-azure-functions-core-tools) | Test functions locally using the CLI
31 | [Publishing a function locally](cli.md#publishing-a-function-locally) | Publish a function app using the CLI
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/durable-diagnostics.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Error Handling and Diagnostics
3 | description: Error Handling and Diagnostics
4 | author: cecilphillip
5 | manager: scottca
6 | keywords: azure functions, functions, logging, diagnostics, monitoring, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: csharp
9 | ms.topic: article
10 | ms.workload: na
11 | ms.date: 04/17/2018
12 | ---
13 |
14 | # Error Handling and Diagnostics
15 |
16 | [!include[](includes/durable-logging.md)]
17 | [!include[](includes/durable-activity-functions-errors.md)]
18 | [!include[](includes/durable-activity-functions-with-retry.md)]
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/durable-functions.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Durable Functions
3 | description: Description
4 | author: cecilphillip
5 | manager: scottca
6 | keywords:
7 | ms.topic: article
8 | ms.date: 04/17/2018
9 | ms.author: cephilli
10 | ms.devlang: csharp
11 | ms.service: functions
12 | ---
13 |
14 | # Durable Functions
15 |
16 | [!include[](../includes/header.md)]
17 |
18 | | | |
19 | |---|---|
20 | |Setting up Orchestrations | |
21 | [Starting Orchestrations](durable-setup.md#starting-orchestrations) | Start a stateful orchestration
22 | [Authoring Orchestrator Functions](durable-setup.md#authoring-orchestrator-functions) | Authoring durable orchestrator functions
23 | [Authoring Activity Functions](durable-setup.md#authoring-activity-functions) | Authoring activity functions
24 | |Managing Orchestrations | |
25 | [Identifying Instances](durable-manage-orchestrations.md#identifying-instances) | Identifying unique orchestration invocations
26 | [Exposing HTTP Management APIs](durable-manage-orchestrations.md#exposing-http-management-apis) | Manage orchestrations via HTTP
27 | [Inspecting the status of an orchestration](durable-manage-orchestrations.md#inspecting-the-status-of-an-orchestration) | Check the status of an orchestration
28 | [Sending event notifications](durable-manage-orchestrations.md#sending-event-notifications) | Send notifications to running orchestrations
29 | [Terminating a running orchestration instance](durable-manage-orchestrations.md#terminating-a-running-orchestration-instance) | Terminate an orchestration instance
30 | |Error Handling and Diagnostics | |
31 | [Logging in orchestrator functions](durable-diagnostics.md#logging-in-orchestrator-functions) | Prevent duplicate logs in orchestrator functions
32 | [Handling activity function exceptions](durable-diagnostics.md#handling-activity-function-exceptions) | Unhandled exceptions in activity functions
33 | [Calling activity function with retry](durable-diagnostics.md#calling-activity-functions-with-retry) | Add retry behavior to activity function calls
34 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/durable-manage-orchestrations.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Managing Orchestrations
3 | description: Manging Orchestrations
4 | author: cecilphillip
5 | manager: scottca
6 | keywords: azure functions, functions, logging, monitoring, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: csharp
9 | ms.topic: article
10 | ms.workload: na
11 | ms.date: 04/17/2018
12 | ---
13 |
14 | # Managing Orchestrations
15 |
16 | [!include[](includes/durable-instance-id.md)]
17 | [!include[](includes/durable-http-api.md)]
18 | [!include[](includes/durable-querying-status.md)]
19 | [!include[](includes/durable-signaling-events.md)]
20 | [!include[](includes/durable-terminating-orchestrations.md)]
21 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/durable-setup.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Setting up Orchestrations
3 | description: Setting up Orchestrations
4 | author: cecilphillip
5 | manager: scottca
6 | keywords: azure functions, functions, logging, monitoring, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: csharp
9 | ms.topic: article
10 | ms.workload: na
11 | ms.date: 04/17/2018
12 | ---
13 |
14 | # Setting up Orchestrations
15 |
16 | [!include[](includes/durable-starting-orchestrations.md)]
17 | [!include[](includes/durable-authoring-orchestrators.md)]
18 | [!include[](includes/durable-authoring-activities.md)]
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/environment-variables.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Environment Variables
3 | description: Tips and tricks for using environment variables in Azure Functions
4 | author: MaximRouiller
5 | manager: scottca
6 | keywords: azure functions, functions, host.json, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: csharp
9 | ms.topic: article
10 | ms.date: 04/30/2018
11 | ms.author: marouill
12 | ---
13 |
14 | # Environment Variables
15 |
16 | At the root of an application is a metadata file that describes the global configuration of the host serving the different functions.
17 |
18 | [!include[](includes/environment-variables-accessing-settings.md)]
19 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/functions-basics.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Functions Basics
3 | description: Description
4 | author: cecilphillip
5 | manager: scottca
6 | keywords:
7 | ms.topic: article
8 | ms.date: 12/11/2017
9 | ms.author: cephilli
10 | ms.devlang: csharp
11 | ms.service: functions
12 | ---
13 |
14 | # Functions Basics
15 |
16 | [!include[](../includes/header.md)]
17 |
18 | | | |
19 | |---|---|
20 | |Host.json configuration | |
21 | [Configuring timeout](hostjson.md#configuring-timeout) | Change the function execution timeout
22 | [Configuring queues](hostjson.md#configuring-queues) | Customize queue trigger properties such as batch size and polling interval
23 | |Environment | |
24 | [Accessing environment variables](environment-variables.md#accessing-environment-variables) | Store and use custom settings
25 | |HTTP routing | |
26 | [Controlling the route prefix with host.json](routes.md#controlling-the-route-prefix-with-hostjson) | Change the route prefix
27 | [Define the function route with function properties](routes.md#define-the-function-route-with-function-properties) | Customize the route of a single HTTP trigger function in code
28 | [Define the function route in the Azure portal](routes.md#define-the-function-route-in-the-azure-portal) | Customize the route of a single HTTP trigger function in the Azure portal
29 | [Adding parameters to function routes](routes.md#adding-parameters-to-function-routes) | Define and access parameters in a route
30 | [Making route parameters optional](routes.md#making-route-parameters-optional) | Use optional route parameters
31 | |Functions Proxies | |
32 | [Using proxies.json](proxies.md#using-proxiesjson) | Create and edit proxies.json
33 | [Creating an HTTP Redirect](proxies.md#creating-an-http-redirect) | Use custom HTTP response codes to redirect requests
34 | [Creating a mock API](proxies.md#creating-a-mock-api) | Create a mock API without a backend
35 | [Returning conditional responses based on backend response codes](proxies.md#returning-conditional-responses-based-on-backend-response-codes) | Return different responses based on back-end response codes
36 | [Referencing application settings](proxies.md#referencing-application-settings) | Use environment variables in Proxies
37 | |Logging and monitoring | |
38 | [Logging with ILogger](logging.md#logging-with-ilogger) | Use `ILogger` instead of `TraceWriter` for logging
39 | [Basic logging with TraceWriter](logging.md#basic-logging-with-tracewriter) | Basic `TraceWriter` usage
40 | [Logging with a third-party logger](logging.md#logging-with-a-third-party-logger) | Use third-party loggers
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/hostjson.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - host.json
3 | description: Tips and tricks for configuring Azure Functions with host.json
4 | author: MaximRouiller
5 | manager: scottca
6 | keywords: azure functions, functions, host.json, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: csharp
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: marouill
12 | ---
13 |
14 |
15 | # Host.json basics
16 |
17 | At the root of an application is a metadata file that describes the global configuration of the host serving the different functions.
18 |
19 | [!include[](includes/hostjson-timeout.md)]
20 |
21 | [!include[](includes/hostjson-queues.md)]
22 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/http-and-webhooks.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - HTTP and webhooks | Microsoft Docs
3 | description: Tips and tricks for using HTTP and webhooks triggers in Azure Functions
4 | author: cecilphillip
5 | manager: scottca
6 | keywords: azure functions, functions, http, webhooks, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: cephilli
12 | ---
13 |
14 | # HTTP and webhooks
15 |
16 | [!include[](includes/http-accessing-querystrings.md)]
17 |
18 | [!include[](includes/http-accessing-request-body.md)]
19 |
20 | [!include[](includes/http-restricting-http-verbs.md)]
21 |
22 | [!include[](includes/http-security-keys.md)]
23 |
24 | [!include[](includes/http-github-comment-webhook.md)]
25 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/cli-function-cli.md:
--------------------------------------------------------------------------------
1 | ## Testing functions with Azure Functions Core Tools
2 |
3 | Azure Functions Core Tools provides a local development environment to create and test azure functions. This example shows how to create and locally run a generic HTTP function trigger. Installation and use of Azure Functions Command Line Tools requires [Node.js](https://nodejs.org/).
4 |
5 | After Node.js is installed, install the command line tools with the following command:
6 |
7 | ```
8 | npm install -g azure-functions-core-tools@latest
9 | ```
10 |
11 | After installation, use the following commands to create a directory that contains a new function project, and a new generic HTTP triggered function within that project:
12 |
13 | ```
14 | mkdir myFunctions
15 | cd myFunctions
16 | func init
17 | func new --language c# --template HttpTrigger --name myHttpTrigger
18 | ```
19 |
20 | Function `myHttpTrigger` is now ready to be tested. Enter the following command to start the Function Host:
21 |
22 | ```
23 | func host start
24 | ```
25 |
26 | Once the host has started, open a browser and navigate to `http://localhost:7071/api/myHttpTrigger?name=Azure`.
27 |
28 | [!include[](../includes/takeaways-heading.md)]
29 |
30 | - Azure Functions Core Tools provide a local development environment for developing, testing, and publishing functions from the command line.
31 | - Use of the command line tool requires installation of [Node.js](https://nodejs.org/)
32 |
33 | [!include[](../includes/read-more-heading.md)]
34 |
35 | - [Code and test Azure functions locally](https://docs.microsoft.com/azure/azure-functions/functions-run-local)
36 | - [Azure Functions Core Tools GitHub Repository](https://github.com/Azure/azure-functions-core-tools)
37 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/cli-publish-locally.md:
--------------------------------------------------------------------------------
1 | ## Publishing a function locally
2 |
3 | Azure Functions Core Tools provides a local development environment to publish Azure functions. Installation and use of Azure Functions Command-Line Tools requires [Node.js](https://nodejs.org/). This example shows how to create and publish a function. This requires an existing function app in Azure.
4 |
5 | After Node.js is installed, install the command-line tools with the following command:
6 |
7 | ```
8 | npm install -g azure-functions-core-tools@latest
9 | ```
10 |
11 | After installation, use the following commands to create a directory that contains a new function project, and adds a new generic HTTP function trigger:
12 |
13 | ```
14 | mkdir myFunctions
15 | cd myFunctions
16 | func init
17 | func new --language c# --template HttpTrigger --name myHttpTrigger
18 | ```
19 |
20 | To publish this function, signing in to Azure is required and can be done through the command line by using the command `func azure login`. This shows a sign-in prompt for Azure. Enter your credentials and press the "Sign In" button. Upon successful sign-in, the command line displays a list of all subscriptions linked to the account.
21 |
22 | The function must be published to a function app that currently exists in Azure. Once you've identified the app you'd like to publish to, enter the following publish command:
23 |
24 | ```
25 | func azure functionapp publish myAzureFunctionApp
26 | ```
27 |
28 | The published function is visible in the Azure portal and ready for use. Use the command `func azure functionapp list` to list function apps associated with the current subscription of the authenticated Azure account.
29 |
30 | [!include[](../includes/takeaways-heading.md)]
31 |
32 | - Azure Functions Core Tools provide a local development environment for developing, testing, and publishing functions from the command line.
33 | - Use of the command-line tool requires installation of [Node.js](https://nodejs.org/)
34 | - Publishing functions from the command line requires sign in to an Azure account, and an existing function app in Azure.
35 |
36 | [!include[](../includes/read-more-heading.md)]
37 |
38 | - [Code and test Azure functions locally](https://docs.microsoft.com/azure/azure-functions/functions-run-local)
39 | - [Azure Functions Core Tools GitHub Repository](https://github.com/Azure/azure-functions-core-tools)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/cosmos-db-documentdbclient.md:
--------------------------------------------------------------------------------
1 | ## Using DocumentClient
2 |
3 | If you have complex queries that are not supported by `id` and `sqlQuery` of the Cosmos DB input binding, you can use the `DocumentClient` directly.
4 |
5 | # [C#](#tab/csharp)
6 |
7 | ```csharp
8 | using Microsoft.Azure.Documents;
9 | using Microsoft.Azure.Documents.Client;
10 | using Microsoft.Azure.Documents.Linq;
11 |
12 | [FunctionName("CosmosDBSample")]
13 | public static async Task Run(
14 | [HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequestMessage req,
15 | [DocumentDB("test", "test", ConnectionStringSetting = "CosmosDB")] DocumentClient client,
16 | int minAge,
17 | TraceWriter log)
18 | {
19 | Uri collectionUri = UriFactory.CreateDocumentCollectionUri("mydb", "mycollection");
20 |
21 | IDocumentQuery query = client.CreateDocumentQuery(collectionUri)
22 | .Where(p => p.Age >= minAge)
23 | .AsDocumentQuery();
24 |
25 | while (query.HasMoreResults)
26 | {
27 | foreach (Person result in await query.ExecuteNextAsync())
28 | {
29 | log.Info(result.Age.ToString());
30 | }
31 | }
32 | }
33 | ```
34 |
35 | # [F#](#tab/fsharp)
36 |
37 | ```fsharp
38 | []
39 | let Run([] req: HttpRequestMessage,
40 | [] client: DocumentClient,
41 | log: TraceWriter,
42 | minAge: int) =
43 |
44 | let collectionUri = UriFactory.CreateDocumentCollectionUri("mydb", "mycollection")
45 |
46 | query {
47 | for p in client.CreateDocumentQuery(collectionUri) do
48 | where (p.Age >= minAge)
49 | }
50 | |> Seq.iter (fun p -> log.Info(p.Age.ToString()))
51 | ```
52 |
53 | [!include[](../includes/takeaways-heading.md)]
54 |
55 | - Use the `DocumentClient` directly to interact with Cosmos DB if `id` and `sqlQuery` in the binding are not enough for your needs.
56 | - For best performance, do not create your own instance of `DocumentClient`. Use the one provided by the Functions runtime as an input parameter.
57 |
58 | [!include[](../includes/read-more-heading.md)]
59 |
60 | - [`DocumentClient` documentation](https://msdn.microsoft.com/library/azure/microsoft.azure.documents.client.documentclient.aspx)
61 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/cosmos-db-id.md:
--------------------------------------------------------------------------------
1 | ## Retrieve a single document by ID
2 |
3 | The Cosmos DB binding can automatically retrieve a document from Cosmos DB and bind it to a parameter. This example uses an `object`. The Cosmos DB binding uses a binding expression (`{id}`) to look up a document from Cosmos DB using the `id` value from the HttpTrigger route.
4 |
5 | # [C#](#tab/csharp)
6 |
7 | ```csharp
8 | [FunctionName("CosmosDBSample")]
9 | public static HttpResponseMessage Run(
10 | [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "foo/{id}")] HttpRequestMessage req,
11 | [DocumentDB("test", "test", ConnectionStringSetting = "CosmosDB", Id = "{id}")] object document)
12 | {
13 | if (document == null)
14 | {
15 | return req.CreateResponse(HttpStatusCode.NotFound);
16 | }
17 | else
18 | {
19 | return req.CreateResponse(HttpStatusCode.OK, document);
20 | }
21 | }
22 | ```
23 |
24 | # [F#](#tab/fsharp)
25 |
26 | ```fsharp
27 | []
28 | let Run([] req: HttpRequestMessage,
29 | [] document: Object) =
30 |
31 | if (document = null)
32 | then req.CreateResponse HttpStatusCode.NotFound
33 | else req.CreateResponse (HttpStatusCode.OK, document)
34 | ```
35 |
36 | [!include[](../includes/takeaways-heading.md)]
37 |
38 | - The example uses an `object` parameter, but the binding can work with other types, including: `dynamic`, `string`, `Microsoft.Azure.Documents.Document`, or a strongly-typed object that you create.
39 | - Binding expressions are a powerful feature of Azure Functions that lets you use values and metadata from a trigger binding in other bindings.
40 |
41 | [!include[](../includes/read-more-heading.md)]
42 |
43 | - [Binding expressions in documentation](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings#binding-expressions-and-patterns)
44 | - [Cosmos DB (DocumentDB) binding documentation](https://docs.microsoft.com/azure/azure-functions/functions-bindings-documentdb)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/cosmos-db-livemigration.md:
--------------------------------------------------------------------------------
1 | ## Trigger a Function based on changes in Cosmos DB
2 |
3 | You can trigger a Function based on changes in your Cosmos DB collections. In this sample we are sending the changes to a second collection using the `IAsyncCollection` explained in [this other recipe](../cosmos-db.md#save-multiple-documents-to-a-collection). You could process or work with the documents before sending it to the second collection.
4 |
5 | # [C#](#tab/csharp)
6 |
7 | ```csharp
8 | using System.Collections.Generic;
9 | using System.Threading.Tasks;
10 | using Microsoft.Azure.Documents;
11 | using Microsoft.Azure.WebJobs;
12 | using Microsoft.Azure.WebJobs.Host;
13 |
14 | [FunctionName("CosmosDbSample")]
15 | public static async Task Run(
16 | [CosmosDBTrigger("ToDoList","Items", ConnectionStringSetting = "CosmosDB")] IReadOnlyList documents,
17 | TraceWriter log,
18 | [DocumentDB("ToDoList", "Migration", ConnectionStringSetting = "CosmosDB", CreateIfNotExists = true)] IAsyncCollector documentsToStore)
19 | {
20 | foreach (var doc in documents)
21 | {
22 | log.Info($"Processing document with Id {doc.Id}");
23 | // work with the document, process or create a new one
24 | await documentsToStore.AddAsync(doc);
25 | }
26 | }
27 | ```
28 |
29 | # [F#](#tab/fsharp)
30 |
31 | ```fsharp
32 | []
33 | let Run([] documents: IReadOnlyList,
34 | log: TraceWriter,
35 | [] documentsToStore: ICollector) =
36 |
37 | documents
38 | |> Seq.iter (fun doc ->
39 | log.Info (sprintf "Processing document with Id %s" doc.Id)
40 | // work with the document, process or create a new one
41 | documentsToStore.Add doc)
42 | ```
43 |
44 | [!include[](../includes/takeaways-heading.md)]
45 |
46 | - The Trigger leverages the **Change Feed** feature in Cosmos DB and will trigger the Function on any insert or update (no deletes supported at the moment).
47 | - In order to use the Trigger, you need to have a second collection to store the checkpoint **leases** generated during the iteration of the Change Feed. You can customize the **leases** collection name and account on the `CosmosDBTrigger` attribute.
48 |
49 | [!include[](../includes/read-more-heading.md)]
50 |
51 | - [Serverless database compute using Azure Functions](https://docs.microsoft.com/azure/cosmos-db/serverless-computing-database)
52 | - [Working with the Change Feed support](https://docs.microsoft.com/azure/cosmos-db/change-feed)
53 | - [Cosmos DB Trigger in Azure Functions](https://docs.microsoft.com/azure/azure-functions/functions-bindings-cosmosdb#trigger)
54 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/cosmos-db-outputcollector.md:
--------------------------------------------------------------------------------
1 | ## Save multiple documents to a collection
2 |
3 | The `IAsyncCollector` lets you save multiple documents within one execution of your Function.
4 |
5 | # [C#](#tab/csharp)
6 |
7 | ```csharp
8 | using System.Net;
9 | using System.Net.Http;
10 | using System.Threading.Tasks;
11 | using Microsoft.Azure.WebJobs;
12 | using Microsoft.Azure.WebJobs.Extensions.Http;
13 | using Microsoft.Azure.WebJobs.Host;
14 |
15 | public class MyClass
16 | {
17 | public string id { get; set; }
18 | public string name { get; set; }
19 | }
20 |
21 | [FunctionName("CosmosDbSample")]
22 | public static async Task Run(
23 | [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]MyClass[] classes,
24 | TraceWriter log,
25 | [DocumentDB("ToDoList", "Items", ConnectionStringSetting = "CosmosDB")] IAsyncCollector documentsToStore)
26 | {
27 | log.Info($"Detected {classes.Length} incoming documents");
28 | foreach (MyClass aClass in classes)
29 | {
30 | await documentsToStore.AddAsync(aClass);
31 | }
32 |
33 | return new HttpResponseMessage(HttpStatusCode.Created);
34 | }
35 | ```
36 |
37 | # [F#](#tab/fsharp)
38 |
39 | ```fsharp
40 | type MyRecord = {
41 | id: string
42 | name: string
43 | }
44 |
45 | []
46 | let Run([] records: MyRecord[],
47 | log: TraceWriter,
48 | [] documentsToStore: ICollector) =
49 |
50 | log.Info (sprintf "Detected %i incoming documents" records.Length)
51 | Array.iter documentsToStore.Add records
52 | new HttpResponseMessage(HttpStatusCode.Created)
53 | ```
54 |
55 | [!include[](../includes/takeaways-heading.md)]
56 |
57 | - The `IAsyncCollector` can be used with a class or also with `dynamic` (as in `IAsyncCollection`).
58 | - When `AddAsync` is called, the document is saved, so if you want to implement any error-handling logic, that is the correct spot for a try/catch.
59 |
60 | [!include[](../includes/read-more-heading.md)]
61 |
62 | - [Cosmos DB (DocumentDB) Output binding documentation](https://docs.microsoft.com/azure/azure-functions/functions-bindings-cosmosdb#output---attributes)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/cosmos-db-sqlquery.md:
--------------------------------------------------------------------------------
1 | ## Retrieve a list of documents
2 |
3 | The Cosmos DB binding can automatically retrieve a list of documents from Cosmos DB and bind it to a parameter. The `sqlQuery` property of the binding is used to specify a query to use to retrieve the documents. This example demonstrates how to select the five most recent documents from the collection as determined by the `_ts` timestamp property.
4 |
5 | # [C#](#tab/csharp)
6 |
7 | ```csharp
8 | [FunctionName("CosmosDBSample")]
9 | public static HttpResponseMessage Run(
10 | [HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequestMessage req,
11 | [DocumentDB("test", "test", ConnectionStringSetting = "CosmosDB", sqlQuery = "SELECT top 2 * FROM c order by c._ts desc")] IEnumerable documents)
12 | {
13 | return req.CreateResponse(HttpStatusCode.OK, documents);
14 | }
15 | ```
16 |
17 | # [F#](#tab/fsharp)
18 |
19 | ```fsharp
20 | []
21 | let Run([] req: HttpRequestMessage,
22 | [] documents: Object seq) =
23 |
24 | req.CreateResponse (HttpStatusCode.OK, documents)
25 | ```
26 |
27 | [!include[](../includes/takeaways-heading.md)]
28 |
29 | - To use the Cosmos DB input binding's `sqlQuery` property, you must bind it to an `IEnumerable` or a type that implements `IEnumerable`.
30 |
31 | [!include[](../includes/read-more-heading.md)]
32 |
33 | - [Cosmos DB (DocumentDB) binding documentation](https://docs.microsoft.com/azure/azure-functions/functions-bindings-documentdb)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-activity-functions-errors.md:
--------------------------------------------------------------------------------
1 | ## Handling activity function exceptions
2 | Unhandled exceptions thrown in activity functions will be rethrown in the calling orchestrator function as a `FunctionFailedException`. The `InnerException` property of the `FunctionFailedException` will contain the original exception from the activity.
3 |
4 | ```csharp
5 | [FunctionName("PlaceOrder")]
6 | public static async Task OrderOrchestration(
7 | [OrchestrationTrigger] DurableOrchestrationContext context,
8 | TraceWriter log)
9 | {
10 | try
11 | {
12 | await context.CallActivityAsync("CheckAndReserveInventory", null);
13 | }
14 | catch (FunctionFailedException ex)
15 | {
16 | log.Error("Inventory check failed", ex);
17 | }
18 | }
19 |
20 |
21 | [FunctionName("CheckAndReserveInventory")]
22 | public static bool CheckAndReserveInventory([ActivityTrigger] DurableActivityContext context)
23 | {
24 | throw new ArgumentException("Oops...");
25 | }
26 | ```
27 |
28 | [!include[](../includes/takeaways-heading.md)]
29 | * `FunctionFailedException` is thrown in the orchestrator if an activity function throws an unhandled exception
30 | * `FunctionFailedException`'s `InnerException` property will contain the source exception from the activity function.
31 |
32 | [!include[](../includes/read-more-heading.md)]
33 | * [Handling errors in Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-error-handling)
34 | * [Debugging and Diagnostics of Durable Functions](https://channel9.msdn.com/Shows/On-NET/Debugging-and-Diagnostics-of-Durable-Functions?WT.mc_id=functions-recipes-docs-cephilli)
35 | * [Durable Functions repo and samples](https://github.com/Azure/azure-functions-durable-extension)
36 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-activity-functions-with-retry.md:
--------------------------------------------------------------------------------
1 | ## Calling activity functions with retry
2 | When call activities in your orchestration functions, you may want to apply a retry policy to handle transient errors that may occur. In such cases, the `DurableOrchestrationContext` provides the `CallActivityWithRetryAsync` method. The difference between `CallActivityAsync` and `CallActivityWithRetryAsync` is that the latter accepts a type of `RetryOptions` that specifies the retry behavior.
3 |
4 | ```csharp
5 | public static async Task OrderOrchestration(
6 | [OrchestrationTrigger] DurableOrchestrationContext context,
7 | ILogger log)
8 | {
9 | RetryOptions retryPolicy = new RetryOptions(
10 | firstRetryInterval: TimeSpan.FromSeconds(3),
11 | maxNumberOfAttempts: 3);
12 |
13 | retryPolicy.Handle = (ex) =>
14 | {
15 | TaskFailedException failedEx = ex as TaskFailedException;
16 | return (failedEx.Name != "CheckAndReserveInventory") ? false : true;
17 | };
18 |
19 | try
20 | {
21 | await context.CallActivityWithRetryAsync("CheckAndReserveInventory", retryPolicy, null);
22 | }
23 | catch (FunctionFailedException ex)
24 | {
25 | log.LogError("Inventory check failed", ex);
26 | }
27 | }
28 | ```
29 |
30 | Here is an activity function that throws an exception.
31 | ```csharp
32 | [FunctionName("CheckAndReserveInventory")]
33 | public static async Task CheckAndReserveInventory([ActivityTrigger] DurableActivityContext context)
34 | {
35 | throw new Exception("Ooops...");
36 | }
37 | ```
38 |
39 | [!include[](../includes/takeaways-heading.md)]
40 | * `CallActivityWithRetryAsync` allows orchestrator functions to call activities with retry behavior.
41 | * A `RetryOptions` instance is used to define retry behavior.
42 | * A `RetryOptions` instance can be reused across multiple calls to `CallActivityWithRetryAsync`.
43 | * The `Handle` property on `RetryOptions` lets callers define whether retries should proceed or not.
44 |
45 | [!include[](../includes/read-more-heading.md)]
46 | * [Handling errors in Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-error-handling)
47 | * [Debugging and Diagnostics of Durable Functions](https://channel9.msdn.com/Shows/On-NET/Debugging-and-Diagnostics-of-Durable-Functions?WT.mc_id=functions-recipes-docs-cephilli)
48 | * [Durable Functions repo and samples](https://github.com/Azure/azure-functions-durable-extension)
49 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-authoring-activities.md:
--------------------------------------------------------------------------------
1 | ## Authoring Activity Functions
2 | Activities are composed together in orchestrator functions to create a stateful workflow. Activities are where most of the processing happens for a given orchestration. `ActivityTriggerAttribute` is used to annotate functions as orchestration activities.
3 |
4 | Activity functions can accept either an instance of `DurableActivityContext` or a JSON serializable type as a parameter. The return values are serialized to JSON and persisted to the orchestration history table when the orchestrator function does checkpointing.
5 |
6 | ```csharp
7 | [FunctionName("CheckAndReserveInventory")]
8 | public static bool CheckAndReserveInventory([ActivityTrigger] DurableActivityContext context)
9 | {
10 | OrderRequestData orderData = context.GetInput();
11 |
12 | // Check inventory system and reserve products
13 | return true;
14 | }
15 | ```
16 |
17 | [!include[](../includes/takeaways-heading.md)]
18 | * `ActivityTriggerAttribute` marks functions as orchestration activities.
19 | * `DurableActivityContext` can be used to access input values for the activities
20 | * Activities functions can return output values. The output must be JSON-serializable.
21 | * A null value will be saved as the output if an orchestrator function returns `Task` or `void`.
22 |
23 | [!include[](../includes/read-more-heading.md)]
24 | * [Durable Functions overview](https://docs.microsoft.com/azure/azure-functions/durable-functions-overview)
25 | * [Activity Trigger](https://docs.microsoft.com/azure/azure-functions/durable-functions-bindings#activity-triggers)
26 | * [Durable Functions repo and samples](https://github.com/Azure/azure-functions-durable-extension)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-authoring-orchestrators.md:
--------------------------------------------------------------------------------
1 | ## Authoring Orchestrator Functions
2 | Orchestrator functions are responsible for managing the stateful workflows in Durable Functions. They take care of checkpointing progress and resuming workflows that are waiting for activities to complete. `OrchestrationTriggerAttribute` is used to annotate functions as orchestrator functions.
3 |
4 | Orchestration functions support only `DurableOrchestrationContext` as a parameter type. `DurableOrchestrationContext` has methods that allow you to call activity functions, call sub-orchestrations, get input data for the orchestrator, and a few others.
5 |
6 | ```csharp
7 | [FunctionName("PlaceOrder")]
8 | public static async Task OrderOrchestration([OrchestrationTrigger] DurableOrchestrationContext context)
9 | {
10 | OrderRequestData orderData = context.GetInput();
11 |
12 | //long running operation
13 | InvoiceData invoice = await context.CallActivityAsync("ProcessPayment", orderData);
14 | return invoice;
15 | }
16 | ```
17 |
18 | [!include[](../includes/takeaways-heading.md)]
19 | * `OrchestrationTriggerAttribute` marks functions are orchestrator functions.
20 | * `DurableOrchestrationContext` is used to interact with the activity functions the make up the stateful workflow.
21 | * Orchestrator functions all run on a single dispatcher thread per host. Therefore, orchestrators should not perform any I/O operations.
22 | * Orchestrator functions can return output values. The output must be JSON-serializable.
23 | * A null value will be saved as the output if an orchestrator function returns `Task` or `void`.
24 |
25 | [!include[](../includes/read-more-heading.md)]
26 | * [Durable Functions overview](https://docs.microsoft.com/azure/azure-functions/durable-functions-overview)
27 | * [Orchestration Trigger](https://docs.microsoft.com/azure/azure-functions/durable-functions-bindings#orchestration-triggers)
28 | * [Durable Functions repo and samples](https://github.com/Azure/azure-functions-durable-extension)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-http-api.md:
--------------------------------------------------------------------------------
1 | ## Exposing HTTP Management APIs
2 | When using a `HttpTrigger` along with Durable Functions, the `CreateCheckStatusResponse` method from `DurableOrchestrationClient` enables the creation of an `HttpResponseMessage`. The response contains links to the various management operations that can be invoked on an orchestration instance. These operations include querying the orchestration status, raising events, and terminating the orchestration.
3 |
4 | ```csharp
5 | [FunctionName("RunOrchestration")]
6 | public static async Task RunOrchestration(
7 | [HttpTrigger(AuthorizationLevel.Anonymous, "POST")]HttpRequestMessage req,
8 | [OrchestrationClient] DurableOrchestrationClient orchestrationClient)
9 | {
10 | OrderRequestData data = await req.Content.ReadAsAsync();
11 | string instanceId = await orchestrationClient.StartNewAsync("PlaceOrder", data);
12 |
13 | return orchestrationClient.CreateCheckStatusResponse(req, instanceId);
14 | }
15 | ```
16 |
17 | The HTTP response body will resemble the following JSON payload, which contains the instance ID and management endpoints.
18 |
19 | ```json
20 | {
21 | "id": "instanceId",
22 | "statusQueryGetUri": "http://host/statusUri",
23 | "sendEventPostUri": "http://host/eventUri",
24 | "terminatePostUri": "http://host/terminateUri"
25 | }
26 | ```
27 |
28 | [!include[](../includes/takeaways-heading.md)]
29 | * `CreateCheckStatusResponse` method of `DurableOrchestrationClient` returns an `HttpResponseMessage` instance containing management links.
30 | * The links in the payload are endpoints to the management API operations.
31 | * `CreateCheckStatusResponse` requires the unique instance ID.
32 |
33 | [!include[](../includes/read-more-heading.md)]
34 | * [HTTP APIs in Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-http-api)
35 | * [Bindings for Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-bindings#orchestration-client)
36 | * [Azure Functions HTTP and webhook bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook)
37 | * [Durable Functions repo and samples](https://github.com/Azure/azure-functions-durable-extension)
38 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-instance-id.md:
--------------------------------------------------------------------------------
1 | ## Identifying Instances
2 | When is started by using the `StartNewAsync` method on the [DurableOrchestrationClient](https://docs.microsoft.com/azure/azure-functions/durable-functions-bindings#orchestration-client), the unique instance ID for that orchestration is returned. If an instance ID isn't provided to the `StartNewAsync` call, a random ID will be generated.
3 |
4 | The instance ID can be stored so that future management operations can be invoked on the respective orchestration.
5 |
6 | ```csharp
7 | [FunctionName("RunOrchestration")]
8 | public static async Task RunOrchestration(
9 | [QueueTrigger("my-orchestration-queue")] string instanceID,
10 | [OrchestrationClient] DurableOrchestrationClient orchestrationClient,
11 | TraceWriter log)
12 | {
13 | string instanceId = await orchestrationClient.StartNewAsync("PlaceOrder", input);
14 | log.Info($"Started orchestration with ID = '{instanceId}'.");
15 | }
16 | ```
17 |
18 | [!include[](../includes/takeaways-heading.md)]
19 | * `StartNewAsync` method of `DurableOrchestrationClient` is used to start a stateful workflow.
20 | * `StartNewAsync` returns a unique instance ID for the orchestration invocation.
21 | * The instance ID can be used to query the status of the orchestration and run other management operations.
22 |
23 | [!include[](../includes/read-more-heading.md)]
24 | * [Instance Management](https://docs.microsoft.com/azure/azure-functions/durable-functions-instance-management)
25 | * [Bindings for Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-bindings#orchestration-client)
26 | * [Durable Functions repo and samples](https://github.com/Azure/azure-functions-durable-extension)
27 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-logging.md:
--------------------------------------------------------------------------------
1 | ## Logging in orchestrator functions
2 | An orchestrator function creates checkpoints as each of its composite activity functions complete. After each call to `CallActivityAsync` on the `DurableOrchestrationContext` instance completes, the orchestrator function will automatically replay to rebuild their in-memory state.
3 |
4 | To prevent logging statements from duplicating, use the `IsReplaying` property on the `DurableOrchestrationContext`.
5 |
6 | ```csharp
7 | [FunctionName("PlaceOrder")]
8 | public static async Task OrderOrchestration(
9 | [OrchestrationTrigger] DurableOrchestrationContext context,
10 | ILogger log)
11 | {
12 | OrderRequestData orderData = context.GetInput();
13 |
14 | if (!context.IsReplaying) log.LogInformation("About Checking inventory");
15 | await context.CallActivityAsync("CheckAndReserveInventory", orderData);
16 |
17 | if (!context.IsReplaying) log.LogInformation("Processing payment");
18 | InvoiceData invoice = await context.CallActivityAsync("ProcessPayment", orderData);
19 |
20 | return invoice;
21 | }
22 | ```
23 |
24 | [!include[](../includes/takeaways-heading.md)]
25 | * `GetStatusAsync` method of `DurableOrchestrationClient` can be used to get status information for a given orchestration.
26 | * Alternatively, the status endpoint returned from `CreateCheckStatusResponse` can be used.
27 | * The execution history and results can be included in the response if `showHistory` and `showHistoryOutput` are set to true.
28 | * `GetStatusAsync` returns an instance of `DurableOrchestrationStatus` that contains all the status information.
29 |
30 | [!include[](../includes/read-more-heading.md)]
31 | * [HTTP APIs in Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-http-api)
32 | * [Debugging and Diagnostics of Durable Functions](https://cda.ms/rH)
33 | * [Durable Functions repo and samples](https://github.com/Azure/azure-functions-durable-extension)
34 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-querying-status.md:
--------------------------------------------------------------------------------
1 | ## Inspecting the status of an orchestration
2 | The status of an orchestration instance can be queried using the `GetStatusAsync` method from `DurableOrchestrationClient`. The only required parameter is the instance ID of the orchestration to be inspected. The status query will include information like the orchestrator function name, creation time, and also running status.
3 |
4 | Optionally, `GetStatusAsync` accepts a `showHistory` boolean parameter that will include the execution history of the orchestration. Another optional parameter, `showHistoryOutput`, can be provided to include the outputs of the activity functions in the status query.
5 |
6 | ```csharp
7 | [FunctionName("CheckOrchestration")]
8 | public static async Task CheckOrchestration(
9 | [QueueTrigger("my-orchestration-status-queue")] string instanceID,
10 | [OrchestrationClient] DurableOrchestrationClient orchestrationClient)
11 | {
12 | DurableOrchestrationStatus status = await orchestrationClient.GetStatusAsync(instanceID, showHistory: true);
13 |
14 | if (status.RuntimeStatus == OrchestrationRuntimeStatus.Completed) {
15 | //do something with this completed orchestration
16 | }
17 | }
18 | ```
19 |
20 | [!include[](../includes/takeaways-heading.md)]
21 | * `GetStatusAsync` method of `DurableOrchestrationClient` can be used to get status information for a given orchestration.
22 | * Alternatively, the status endpoint returned from `CreateCheckStatusResponse` can be used.
23 | * The execution history and results can be included in the response if `showHistory` and `showHistoryOutput` are set to true.
24 | * `GetStatusAsync` returns an instance of `DurableOrchestrationStatus` that contains all the status information.
25 |
26 | [!include[](../includes/read-more-heading.md)]
27 | * [HTTP APIs in Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-http-api)
28 | * [Debugging and Diagnostics of Durable Functions](https://cda.ms/rH)
29 | * [Durable Functions repo and samples](https://github.com/Azure/azure-functions-durable-extension)
30 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-signaling-events.md:
--------------------------------------------------------------------------------
1 | ## Sending event notifications
2 | Orchestrations can be sent event notifications by using the `RaiseEventAsync` method of `DurableOrchestrationClient`. The method must be provided with the instance ID, an event name, and the associated event data.
3 |
4 | ```csharp
5 | [FunctionName("NotifyEvent")]
6 | public static async Task NotifyEvent(
7 | [QueueTrigger("event-queue")] NotificationInfo notification,
8 | [OrchestrationClient] DurableOrchestrationClient orchestrationClient)
9 | {
10 | await orchestrationClient.RaiseEventAsync(notification.instanceID, notification.EventName, notification.EventData);
11 | }
12 | ```
13 |
14 | Orchestrations waiting for event notifications can use the `WaitForExternalEvent` method on their `DurableOrchestrationContext` instance. The method takes the event type as a generic type parameter as well as the event name as a function parameter.
15 |
16 | ```csharp
17 | [FunctionName("PlaceOrder")]
18 | public static async Task OrderOrchestration([OrchestrationTrigger] DurableOrchestrationContext context)
19 | {
20 | OrderRequestData orderData = context.GetInput();
21 |
22 | bool inventoryReserved = await context.CallActivityAsync("CheckAndReserveInventory", orderData);
23 |
24 | if (!inventoryReserved) {
25 | await context.WaitForExternalEvent("Proceed");
26 | await context.CallActivityAsync("CheckAndReserveInventory", orderData);
27 | }
28 |
29 | InvoiceData invoice = await context.CallActivityAsync("ProcessPayment", orderData);
30 | return invoice;
31 | }
32 | ```
33 |
34 | [!include[](../includes/takeaways-heading.md)]
35 | * `RaiseEventAsync` method of `DurableOrchestrationClient` can be used to send event notifications to orchestrations.
36 | * `WaitForExternalEvent` on `DurableOrchestrationContext` can be used to pause execution until a notification is received.
37 | * Alternatively, the notification endpoint returned from `CreateCheckStatusResponse` can be used.
38 |
39 | [!include[](../includes/read-more-heading.md)]
40 | * [HTTP APIs in Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-http-api)
41 | * [Debugging and Diagnostics of Durable Functions](https://cda.ms/rH)
42 | * [Durable Functions repo and samples](https://github.com/Azure/azure-functions-durable-extension)
43 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-starting-orchestrations.md:
--------------------------------------------------------------------------------
1 | ## Starting Orchestrations
2 | Orchestrations with Durable Functions are started by using the `StartNewAsync` method on the [DurableOrchestrationClient](https://docs.microsoft.com/azure/azure-functions/durable-functions-bindings#orchestration-client). An instance of `DurableOrchestrationClient` can be retrieved by using the `OrchestrationClientAttribute` binding. The binding can be paired with exiting function triggers.
3 |
4 | ```csharp
5 | [FunctionName("RunOrchestration")]
6 | public static async Task RunOrchestration(
7 | [HttpTrigger(AuthorizationLevel.Anonymous, "POST")]HttpRequestMessage req,
8 | [OrchestrationClient] DurableOrchestrationClient orchestrationClient)
9 | {
10 | OrderRequestData data = await req.Content.ReadAsAsync();
11 | string instanceId = await orchestrationClient.StartNewAsync("PlaceOrder", data);
12 |
13 | return orchestrationClient.CreateCheckStatusResponse(req, instanceId);
14 | }
15 | ```
16 |
17 | [!include[](../includes/takeaways-heading.md)]
18 | * `StartNewAsync` method of `DurableOrchestrationClient` is used to start a stateful workflow.
19 | * `StartNewAsync` has overloads that accept input that may need to be passed to the orchestration.
20 | * The `OrchestrationClient` binding is used to get access to the `DurableOrchestrationClient`
21 | * The `OrchestrationClient` binding can be used with core Azure Functions triggers.
22 |
23 | [!include[](../includes/read-more-heading.md)]
24 | * [Durable Functions overview](https://docs.microsoft.com/azure/azure-functions/durable-functions-overview)
25 | * [Bindings for Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-bindings#orchestration-client)
26 | * [Durable Functions NuGet package](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.DurableTask)
27 | * [Azure Functions triggers and bindings concepts](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/durable-terminating-orchestrations.md:
--------------------------------------------------------------------------------
1 | ## Terminating a running orchestration instance
2 | An orchestration instance can be terminated using the `TerminateAsync` method on [DurableOrchestrationClient](https://docs.microsoft.com/azure/azure-functions/durable-functions-bindings#orchestration-client). The instance ID of the orchestration and a reason string must be passed to `TerminateAsync`.
3 |
4 | ```csharp
5 | [FunctionName("TerminateOchestration")]
6 | public static async Task TerminateOchestration(
7 | [QueueTrigger("orchestration-termination-queue")] string instanceID,
8 | [OrchestrationClient] DurableOrchestrationClient orchestrationClient)
9 | {
10 | string terminationReason = "Tired of waiting on this one";
11 | await orchestrationClient.TerminateAsync(instanceID, terminationReason);
12 | }
13 | ```
14 |
15 | [!include[](../includes/takeaways-heading.md)]
16 | * `TerminateAsync` method of `DurableOrchestrationClient` can be used to terminate a running orchestration.
17 | * Alternatively, the termination endpoint returned from `CreateCheckStatusResponse` can be used.
18 |
19 | [!include[](../includes/read-more-heading.md)]
20 | * [HTTP APIs in Durable Functions](https://docs.microsoft.com/azure/azure-functions/durable-functions-http-api)
21 | * [Debugging and Diagnostics of Durable Functions](https://cda.ms/rH)
22 | * [Durable Functions repo and samples](https://github.com/Azure/azure-functions-durable-extension)
23 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/environment-variables-accessing-settings.md:
--------------------------------------------------------------------------------
1 | ## Accessing environment variables
2 |
3 | You may need to store custom settings for your Azure function. One available option is to use environment variables. You can manage these settings in the `Application settings` section of your function app in the Azure portal.
4 |
5 | # [C#](#tab/csharp)
6 |
7 | ```csharp
8 | [FunctionName("CustomSettings")]
9 | public static Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET")]HttpRequestMessage req, TraceWriter log)
10 | {
11 | log.Info("101 Azure Function Demo - Accessing Environment variables");
12 | var customSetting = Environment.GetEnvironmentVariable("CustomSetting", EnvironmentVariableTarget.Process);
13 | return Task.FromResult(req.CreateResponse(HttpStatusCode.OK, new { setting= customSetting }));
14 | }
15 | ```
16 |
17 | # [F#](#tab/fsharp)
18 |
19 | ```fsharp
20 | []
21 | let Run([] req: HttpRequestMessage, log: TraceWriter) =
22 | log.Info "101 Azure Function Demo - Accessing Environment variables"
23 | let customSetting = Environment.GetEnvironmentVariable("CustomSetting", EnvironmentVariableTarget.Process)
24 | req.CreateResponse(HttpStatusCode.OK, sprintf "My setting is %s" customSetting)
25 | ```
26 |
27 | ---
28 |
29 | [!include[](../includes/takeaways-heading.md)]
30 | * Environment variables are configured in the `Application Settings` section
31 | * Use the static `GetEnvironmentVariable` method of the `Environment` type access them
32 |
33 | [!include[](../includes/read-more-heading.md)]
34 | * [Environment Variables](https://docs.microsoft.com/azure/azure-functions/functions-dotnet-class-library#environment-variables)
35 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/hostjson-queues.md:
--------------------------------------------------------------------------------
1 | ## Configuring queues
2 |
3 | Functions that depend on queues can have the behavior of the queues customized.
4 |
5 | Among the different possibilities, it's possible to set a polling interval, retry interval, as well as the size of the batch of messages to process in parallel.
6 |
7 |
8 | ```json
9 | {
10 | "queues": {
11 | // Interval in milliseconds
12 | "maxPollingInterval": 2000,
13 | // Time between calls/retries
14 | "visibilityTimeout": "00:00:30",
15 | //Maximum of 32
16 | "batchSize": 16
17 | }
18 | }
19 | ```
20 |
21 | [!include[](../includes/read-more-heading.md)]
22 |
23 | For the full range of options, look up the [complete documentation of host.json](https://github.com/Azure/azure-webjobs-sdk-script/wiki/host.json).
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/hostjson-timeout.md:
--------------------------------------------------------------------------------
1 | ## Configuring timeout
2 |
3 | Timeouts allow the host to determine when the function will time out.
4 |
5 | On a Consumption plan, the valid values are between 1 second (`00:00:01`) and 10 minutes (`00:10:00`). On an App Service Plan, any interval can be used including null. Setting it to null will have it wait indefinitely.
6 |
7 | ```json
8 | {
9 | "functionTimeout": "00:05:00"
10 | }
11 | ```
12 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/http-accessing-querystrings.md:
--------------------------------------------------------------------------------
1 | ## Accessing query string values in HTTP Triggers
2 |
3 | When making HTTP requests, you have the ability of supplying additional parameters via a query string. These parameters can be retrieved to alter how the response is returned.
4 |
5 | The following example appends two query string variables along with their associated values:
6 |
7 | `http:///api/function-name?page=1&orderby=name`
8 |
9 | ```csharp
10 | [FunctionName("AccessQueryString")]
11 | public static Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET")]HttpRequestMessage req, TraceWriter log)
12 | {
13 | log.Info("101 Azure Function Demo - Accessing the query string values in HTTP Triggers");
14 |
15 | // Retrieve query parameters
16 | IEnumerable> values = req.GetQueryNameValuePairs();
17 |
18 | // Write query parameters to log
19 | foreach (KeyValuePair val in values)
20 | {
21 | log.Info($"Parameter: {val.Key}\nValue: {val.Value}\n");
22 | }
23 |
24 | // return query parameters in response
25 | return Task.FromResult(req.CreateResponse(HttpStatusCode.OK, values));
26 | }
27 |
28 | ```
29 |
30 | [!include[](../includes/takeaways-heading.md)]
31 | * Use the `GetQueryNameValuePairs` method of `HttpRequestMessage` to retrieve query string parameters
32 | * `GetQueryNameValuePairs` returns a list of `KeyValuePairs`
33 |
34 | [!include[](../includes/read-more-heading.md)]
35 | * [Azure Functions HTTP and webhook bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook)
36 | * [Create a function triggered by a generic webhook](https://docs.microsoft.com/azure/azure-functions/functions-create-generic-webhook-triggered-function)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/http-accessing-request-body.md:
--------------------------------------------------------------------------------
1 | ## Accessing the request body in HTTP Triggers
2 |
3 | When making HTTP requests, you may need to pass on additional data via the body of the request. You can easily get access to content of the message body using `HttpRequestMessage`.
4 |
5 | JSON body content
6 |
7 | ```json
8 | {
9 | "firstname" : "Scott",
10 | "isdisabled" : "true"
11 | }
12 | ```
13 |
14 | XML body content
15 |
16 | ```xml
17 |
18 | cecil
19 | true
20 |
21 | ```
22 |
23 | ```csharp
24 | [FunctionName("ReadingRequestBody")]
25 | public static async Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "POST", Route = null)]HttpRequestMessage req, TraceWriter log)
26 | {
27 | log.Info("101 Azure Function Demo - Reading the request body in HTTP Triggers");
28 |
29 | // Read body
30 | Customer data = await req.Content.ReadAsAsync();
31 |
32 | // Echo request data back in the response
33 | return req.CreateResponse(HttpStatusCode.OK, data);
34 | }
35 |
36 | public class Customer
37 | {
38 | public string FirstName { get; set; }
39 | public bool IsDisabled { get; set; }
40 | }
41 |
42 | ```
43 |
44 | [!include[](../includes/takeaways-heading.md)]
45 | * Use the `ReadAsAsync` method to deserialize the request body to a specified object type.
46 | * `application/json` and `application/xml` content types are supported out of the box. Ensure the `Content-type` header is properly set.
47 | * JSON serialization uses JSON.NET.
48 | * Other methods available to ready body content include `ReadAsStringAsync`, `ReadAsStreamAsync` and, `ReadAsByteArrayAsync`.
49 |
50 | [!include[](../includes/read-more-heading.md)]
51 | * [HttpRequestMessage](https://docs.microsoft.com/dotnet/api/system.net.http.httprequestmessage)
52 | * [HttpResponseMessage](https://docs.microsoft.com/dotnet/api/system.net.http.httpresponsemessage)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/http-github-comment-webhook.md:
--------------------------------------------------------------------------------
1 | ## GitHub Comment Webhook
2 |
3 | Functions can be triggered with a GitHub webhook. This requires configuring a webhook for a GitHub repository. This example logs issue comments from a GitHub repository.
4 |
5 | ```csharp
6 | using System.Net;
7 |
8 | public static async Task Run(HttpRequestMessage req, TraceWriter log)
9 | {
10 | dynamic data = await req.Content.ReadAsAsync();
11 | string gitHubComment = data?.comment?.body;
12 | log.Info("GitHub Comment WebHook: " + gitHubComment);
13 | }
14 |
15 | ```
16 |
17 | [!include[](../includes/takeaways-heading.md)]
18 |
19 | - A GitHub webhook function requires configuration on GitHub by adding a webhook to a GitHub repository, adding the function's url and GitHub secret to the webhook, and setting the content type as `application/json`.
20 | - A GitHub webhook function can be triggered by a number of repository changes such as issues, pull requests, and branches.
21 |
22 |
23 | [!include[](../includes/read-more-heading.md)]
24 |
25 | - [Create a function triggered by a GitHub webhook](https://docs.microsoft.com/azure/azure-functions/functions-create-github-webhook-triggered-function)
26 | - [Azure Functions HTTP and webhook bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/http-restricting-http-verbs.md:
--------------------------------------------------------------------------------
1 | ## Restricting HTTP verbs in HTTP Triggers
2 |
3 | With the `HttpTrigger` attribute, you can list one or more HTTP verbs that your function responds to.
4 |
5 |
6 | ```csharp
7 | // Respond to only GET requests
8 | Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET")]HttpRequestMessage req, TraceWriter log)
9 | {
10 | // ...
11 | }
12 |
13 | // Respond to GET or PUT requests
14 | Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET", "PUT")]HttpRequestMessage req, TraceWriter log)
15 | {
16 | // ...
17 | }
18 | ```
19 |
20 | [!include[](../includes/takeaways-heading.md)]
21 | * Using the `HttpTrigger` trigger you can list supported HTTP verbs.
22 | * Always specify one or more HTTP verbs to respond to.
23 |
24 | [!include[](../includes/read-more-heading.md)]
25 | * [Azure Functions HTTP and webhook bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook)
26 | * [Method Definitions](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/http-security-keys.md:
--------------------------------------------------------------------------------
1 | ## Securing HTTP Triggers with security keys
2 |
3 | When creating your function, you have the option of allowing it to be called by anyone (Anonymous) or to require a security key.
4 |
5 | When making a request to a secure function, you are required to provide the security key as shown.
6 |
7 | `http://<your-function-url>/api/function-name?code=`
8 |
9 | Keys are stored as part of your function app in Azure and are encrypted at rest. To view your keys, create new ones, or roll keys to new values, navigate to one of your functions within the Azure portal.
10 |
11 | ```csharp
12 | [FunctionName("SecuredFunction")]
13 | public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "GET")]HttpRequestMessage req, TraceWriter log)
14 | {
15 | log.Info("Azure Function Demos - Restricting HTTP verbs");
16 |
17 | return req.CreateResponse(HttpStatusCode.OK, "Secure Response");
18 | }
19 | ```
20 |
21 | [!include[](../includes/takeaways-heading.md)]
22 | * There are two types of keys that can be used to secure your Azure Function; Host and Function.
23 | * Host keys are shared by all functions in the same function app.
24 | * Function keys apply only to the specific function where they are defined.
25 | * Anonymous functions can be called by anyone.
26 | * The `AuthorizationLevel` enum contains the levels of security you can set on the `HttpTrigger` attribute.
27 | * In the HTTP request, keys can be specified in a `code` query string parameter or a `x-functions-key` HTTP header
28 |
29 | [!include[](../includes/read-more-heading.md)]
30 | * [Working with Keys](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook#working-with-keys)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/logging-ilogger.md:
--------------------------------------------------------------------------------
1 | ## Logging with ILogger
2 | As an alternative to `TraceWriter`, an instance of [`ILogger`](https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.ilogger) can be used instead.
3 |
4 | The advantage of using `ILogger` instead of `TraceWriter` is that you get support for structured logging, which allows for richer analytics support. This is helpful if you target your logs at a tool like [Application Insights](https://docs.microsoft.com/azure/application-insights/app-insights-analytics).
5 |
6 | # [C#](#tab/csharp)
7 |
8 | ```csharp
9 | [FunctionName("ILoggerHttpLogging")]
10 | public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET")]HttpRequestMessage req, ILogger log)
11 | {
12 | log.LogInformation("101 Azure Function Demo - Logging with ITraceWriter");
13 | log.LogTrace("Here is a verbose log message");
14 | log.LogWarning("Here is a warning log message");
15 | log.LogError("Here is an error log message");
16 | log.LogCritical("This is a critical log message => {message}", "We have a big problem");
17 | return req.CreateResponse(HttpStatusCode.OK);
18 | }
19 | ```
20 |
21 | # [F#](#tab/fsharp)
22 |
23 | ```fsharp
24 | []
25 | let Run([] req: HttpRequestMessage, log: ILogger) =
26 | log.LogInformation "101 Azure Function Demo - Logging with ITraceWriter"
27 | log.LogTrace "Here is a verbose log message"
28 | log.LogWarning "Here is a warning log message"
29 | log.LogError "Here is an error log message"
30 | log.LogCritical("This is a critical log message => {message}", "We have a big problem")
31 | req.CreateResponse HttpStatusCode.OK
32 | ```
33 |
34 | [!include[](../includes/takeaways-heading.md)]
35 | * `ILogger` can be used as an alternative to `TraceWriter`
36 | * `ILogger` supports structured logging
37 |
38 | [!include[](../includes/read-more-heading.md)]
39 | * [ILogger support](https://github.com/Azure/azure-webjobs-sdk-script/wiki/ILogger)
40 | * [ILogger extension methods](https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.loggerextensions)
41 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/logging-tracewriter.md:
--------------------------------------------------------------------------------
1 | ## Basic logging with TraceWriter
2 | To enable basic logging in your functions, you can include a parameter of type `TraceWriter` and an instance is provided to you. `TraceWriter` is defined in the [Azure WebJobs SDK](https://github.com/Azure/azure-webjobs-sdk/blob/master/src/Microsoft.Azure.WebJobs.Host/TraceWriter.cs). The `tracing` property in `host.json` can be used to configure `TraceWriter`.
3 |
4 | # [C#](#tab/csharp)
5 |
6 | ```csharp
7 | [FunctionName("TraceWriterLogging")]
8 | public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET")]HttpRequestMessage req, TraceWriter log)
9 | {
10 | log.Info("101 Azure Function Demo - Basic logging with TraceWriter");
11 | log.Verbose("Here is a verbose log message");
12 | log.Warning("Here is a warning log message");
13 | log.Error("Here is an error log message");
14 |
15 | TraceEvent traceEvent = new TraceEvent(TraceLevel.Info, "and another one!");
16 | log.Trace(traceEvent);
17 |
18 | return req.CreateResponse(HttpStatusCode.OK);
19 | }
20 | ```
21 |
22 | # [F#](#tab/fsharp)
23 |
24 | ```fsharp
25 | []
26 | let Run([] req: HttpRequestMessage, log: TraceWriter) =
27 | log.Info "101 Azure Function Demo - Basic logging with TraceWriter"
28 | log.Verbose "Here is a verbose log message"
29 | log.Warning "Here is a warning log message"
30 | log.Error "Here is an error log message"
31 |
32 | let traceEvent = TraceEvent(TraceLevel.Info, "and another one!")
33 | log.Trace traceEvent
34 |
35 | req.CreateResponse HttpStatusCode.OK
36 | ```
37 |
38 | host.json
39 | ```json
40 | {
41 | "tracing": {
42 | "consoleLevel": "verbose"
43 | }
44 | }
45 | ```
46 |
47 | [!include[](../includes/takeaways-heading.md)]
48 | * You can optionally include a `TraceWriter` parameter to your function.
49 | * `TraceWriter` provides the `Trace`, `Verbose`, `Info`, `Warning` & `Error` methods.
50 | * `TraceWriter` is a part of the `Microsoft.Azure.WebJobs` package.
51 | * Avoid using `Console.WriteLine` for logging.
52 | * Log levels can be configured in `host.json`. The default log level is `info`.
53 |
54 | [!include[](../includes/read-more-heading.md)]
55 | * [Azure Functions C# Developer Reference](https://docs.microsoft.com/azure/azure-functions/functions-reference-csharp#logging)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/logging-using-third-party-logger.md:
--------------------------------------------------------------------------------
1 | ## Logging with a third-party logger
2 | If you would rather use your preferred logger, you can easily do so by just adding a NuGet package.
3 |
4 | The following code shows a function using
5 | the [Serilog.Sinks.AzureTableStorage](https://www.nuget.org/packages/serilog.sinks.azuretablestorage) package.
6 |
7 | # [C#](#tab/csharp)
8 |
9 | ```csharp
10 | [FunctionName("ThirdPartyLogger")]
11 | public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET")]HttpRequestMessage req)
12 | {
13 |
14 | string connectionString = Environment.GetEnvironmentVariable("StorageAccountConnectionString", EnvironmentVariableTarget.Process);
15 |
16 | string tableName = Environment.GetEnvironmentVariable("StorageAccountTableName", EnvironmentVariableTarget.Process);
17 |
18 | Logger log = new LoggerConfiguration()
19 | .WriteTo.AzureTableStorage(connectionString, storageTableName: tableName, restrictedToMinimumLevel: LogEventLevel.Verbose)
20 | .CreateLogger();
21 |
22 | log.Debug("Here is a debug message {message}", "with some structured content");
23 |
24 | log.Verbose("Here is a verbose log message");
25 | log.Warning("Here is a warning log message");
26 | log.Error("Here is an error log message");
27 |
28 | return req.CreateResponse(HttpStatusCode.OK);
29 | }
30 | ```
31 |
32 | # [F#](#tab/fsharp)
33 |
34 | ```fsharp
35 | []
36 | let Run([] req: HttpRequestMessage) =
37 | let connectionString = Environment.GetEnvironmentVariable("StorageAccountConnectionString", EnvironmentVariableTarget.Process)
38 |
39 | let tableName = Environment.GetEnvironmentVariable("StorageAccountTableName", EnvironmentVariableTarget.Process)
40 |
41 | let log = LoggerConfiguration()
42 | .WriteTo
43 | .AzureTableStorage(connectionString, storageTableName = tableName, restrictedToMinimumLevel = LogEventLevel.Verbose)
44 | .CreateLogger()
45 |
46 | log.Debug("Here is a debug message {message}", "with some structured content")
47 |
48 | log.Verbose "Here is a verbose log message"
49 | log.Warning "Here is a warning log message"
50 | log.Error "Here is an error log message"
51 |
52 | req.CreateResponse HttpStatusCode.OK
53 | ```
54 |
55 | [!include[](../includes/takeaways-heading.md)]
56 | * Alternative loggers can be used to capture log information from your functions.
57 | * You can use NuGet to not only add loggers, but extend your functions with other functionality.
58 |
59 | [!include[](../includes/read-more-heading.md)]
60 | * [Serilog](https://serilog.net/)
61 | * [Azure Functions C# Developer Reference](https://docs.microsoft.com/azure/azure-functions/functions-reference-csharp#logging)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/manual-trigger.md:
--------------------------------------------------------------------------------
1 | ## Manual C# Function
2 |
3 | The following example is a function that must be triggered manually. The Azure portal is one way to trigger a function manually.
4 |
5 | ```csharp
6 | using System;
7 |
8 | [NoAutomaticTrigger]
9 | public static void Run(string input, TraceWriter log)
10 | {
11 | log.Info($"This is a manually triggered C# function with input: {input}");
12 | }
13 | ```
14 |
15 | [!include[](../includes/takeaways-heading.md)]
16 |
17 | - The portal contains an optional request body section for entering input manually.
18 | - A function can be manually triggered. The portal or Azure command line tools are ways to do this.
19 |
20 | [!include[](../includes/read-more-heading.md)]
21 |
22 | - [Create your first function in the Azure portal](https://docs.microsoft.com/azure/azure-functions/functions-create-first-azure-function)
23 | - [Get started with Azure CLI](https://docs.microsoft.com/cli/azure/get-started-with-azure-cli)
24 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/portal-environment-controlling-http-verbs.md:
--------------------------------------------------------------------------------
1 | ## Allowing HTTP verbs in the Azure portal
2 |
3 | If you want to control which HTTP verbs are available for your function in the Azure portal, access your function's integrate tab.
4 |
5 | 
6 |
7 | On the integrate page under "Allowed HTTP methods", you can choose either All methods or Selected methods. If you select All methods, there isn't anything else to do. With selected methods, eight checkboxes appear for you to customize access to your app:
8 |
9 | 
10 |
11 | [!include[](../includes/takeaways-heading.md)]
12 |
13 | - Controlling HTTP verb permissions for your function can be as easy as changing a few settings in the integrate tab in the Azure portal.
14 |
15 | [!include[](../includes/read-more-heading.md)]
16 |
17 | - [Azure REST API](https://docs.microsoft.com/rest/api/)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/portal-environment-daily-usage-quota.md:
--------------------------------------------------------------------------------
1 | ## Controlling how much your function can run in one day
2 |
3 | Azure Functions measures the run time of functions in GB-seconds. To avoid being overbilled, Azure Functions gives the user the ability to set Daily Usage Quotas for their function apps. When an app hits the quota, it will cease to run until midnight UTC. To set this limit, first access your app in the Azure portal, and navigate to the Overview tab.
4 |
5 | 
6 |
7 | Click through to the Function app settings page to get to the Daily Usage Quota (GB-sec) field. From there, you can enter your desired quota in GB-seconds.
8 |
9 | 
10 |
11 | [!include[](../includes/takeaways-heading.md)]
12 |
13 | - A function's use is measured in GB-seconds
14 | - Azure Functions can have their usage limited by the Daily Usage Quota setting in the function app settings.
15 |
16 | [!include[](../includes/read-more-heading.md)]
17 |
18 | - [More on Function app settings](https://docs.microsoft.com/azure/azure-functions/functions-how-to-use-azure-function-app-settings)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/portal-environment-keys.md:
--------------------------------------------------------------------------------
1 | ## Getting your function and host keys in the Azure portal
2 |
3 | If your function's authorization is set to function or admin, all requests must contain the function key or the host key to access them. To get to your keys in the Azure portal, go to the management tab for the function.
4 |
5 | 
6 |
7 | On the manage page you will see your function keys, as well as options to create, remove, or update any function keys.
8 |
9 | 
10 |
11 | Host keys are identical across functions in the same function app, but function keys are unique to each function.
12 |
13 | [!include[](../includes/takeaways-heading.md)]
14 |
15 | - Keys can be accessed and managed in the manage tab of your function in the Azure portal.
16 | - Every function has its own function key, but every function in a function app shares a host key.
17 |
18 | [!include[](../includes/read-more-heading.md)]
19 |
20 | [More on keys and what they are used for](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook#keys)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/portal-functions-in-portal.md:
--------------------------------------------------------------------------------
1 | ## Working with Functions in the Azure portal
2 |
3 | Functions can be created, configured, and tested in the Azure portal. To create a function, you must first create a Function App to host execution of functions. This can be found by clicking the + button in the top left corner and searching for Function App in the Marketplace.
4 |
5 | 
6 |
7 | Once configured and created, navigate to the new function app, expand it, and click the + button next to Functions. Select a function to create and the language, and click "Create this function." This example works with a generic HTTP function trigger.
8 |
9 | 
10 |
11 | In the portal view of the function, the left side has a list of the editable function files and a test view. Function files can be edited in the portal and also tested by clicking the "Run" button at the bottom of the test view.
12 |
13 | 
14 |
15 | [!include[](../includes/takeaways-heading.md)]
16 | - Functions can be created, and tested in the Portal.
17 | - Function apps host functions.
18 |
19 | [!include[](../includes/read-more-heading.md)]
20 | - [Create your first function in the Azure portal](https://docs.microsoft.com/azure/azure-functions/functions-create-first-azure-function)
21 |
22 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/proxies-conditional-responses.md:
--------------------------------------------------------------------------------
1 | ## Returning conditional responses based on backend response codes
2 |
3 | Azure Functions Proxies can be configured to return a custom response based on the backend response.
4 |
5 | To configure proxies, edit `proxies.json`.
6 |
7 | ```json
8 | {
9 | "proxies": {
10 | "statuses": {
11 | "matchCondition": {
12 | "methods": [
13 | "GET"
14 | ],
15 | "route": "/status/{code}"
16 | },
17 | "backendUri": "https://httpbin.org/status/{code}",
18 | "responseOverrides": {
19 | "backend.response.statusCode": {
20 | "401": {
21 | "response.statusCode": 302,
22 | "response.headers.Location": "https://myloginpage"
23 | },
24 | "418": {
25 | "response.headers.Content-Type": "text/plain",
26 | "response.body": "I'm a teapot"
27 | },
28 | "5xx": {
29 | "response.headers.Content-Type": "application/json",
30 | "response.body": {
31 | "statusCode": "{backend.response.statusCode}"
32 | }
33 | }
34 | }
35 | }
36 | }
37 | }
38 | }
39 | ```
40 |
41 | [!include[](../includes/takeaways-heading.md)]
42 |
43 | - Azure Functions Proxies are configured using `proxies.json`.
44 | - Proxies can customize the response based on the backend response status code.
45 |
46 | [!include[](../includes/read-more-heading.md)]
47 |
48 | - [Azure Functions Proxies documentation](https://docs.microsoft.com/azure/azure-functions/functions-proxies)
49 | - [Proxies Sample](https://gist.github.com/sjkp/890d94b958965898e45e69bf199c88d4)
50 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/proxies-mock-api.md:
--------------------------------------------------------------------------------
1 | ## Creating a mock API
2 |
3 | Azure Functions Proxies can return custom responses without a backend service. It can be used to create a mock API.
4 |
5 | Here is the `proxies.json` of a mock API that responds to GET and POST requests.
6 |
7 | ```json
8 | {
9 | "proxies": {
10 | "Mock API - GET": {
11 | "matchCondition": {
12 | "methods": [
13 | "GET"
14 | ],
15 | "route": "/api/v1/orders/{orderId}"
16 | },
17 | "responseOverrides": {
18 | "response.statusCode": "200",
19 | "response.headers.Content-Type": "application/json",
20 | "response.body": {
21 | "id": "{orderId}",
22 | "total": 100,
23 | "items": [
24 | {
25 | "item": "2e649ae3-09f2-474a-bec6-0d066d32cd0a",
26 | "quantity": 5,
27 | "price": 20
28 | }
29 | ]
30 | }
31 | }
32 | },
33 | "Mock API - POST": {
34 | "matchCondition": {
35 | "methods": [
36 | "POST"
37 | ],
38 | "route": "/api/v1/orders"
39 | },
40 | "responseOverrides": {
41 | "response.statusCode": "201",
42 | "response.headers.Location": "https://%WEBSITE_HOSTNAME%/api/v1/orders/d0458144-407c-4f05-aa8d-90102c488603"
43 | }
44 | }
45 | }
46 | }
47 | ```
48 |
49 | [!include[](../includes/takeaways-heading.md)]
50 |
51 | - Proxies can be used to set the status code, headers, and body of a response.
52 | - Proxies can be configured to without a `backendUri`.
53 |
54 | [!include[](../includes/read-more-heading.md)]
55 |
56 | - [Azure Functions Proxies documentation](https://docs.microsoft.com/azure/azure-functions/functions-proxies)
57 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/proxies-proxies-json.md:
--------------------------------------------------------------------------------
1 | ## Using proxies.json
2 |
3 | Azure Functions Proxies can be used to modify requests to and responses from your function app. Simpler configurations can be managed from the Azure portal, which modifies a file called `proxies.json` behind the scenes. You can modify `proxies.json` directly to enable more complex scenarios.
4 |
5 | The [App Service Editor](https://docs.microsoft.com/azure/azure-functions/functions-how-to-use-azure-function-app-settings#editor) allows you to modify all files in the function app's root directory. You can use it to edit an existing `proxies.json` file. If a `proxies.json` does not exist, you can use it to create one and edit it.
6 |
7 | [!include[](../includes/takeaways-heading.md)]
8 |
9 | - Azure Functions Proxies are configured using `proxies.json`.
10 | - You can edit `proxies.json` using App Service Editor.
11 |
12 | [!include[](../includes/read-more-heading.md)]
13 |
14 | - [Azure Functions Proxies documentation](https://docs.microsoft.com/azure/azure-functions/functions-proxies)
15 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/proxies-redirects.md:
--------------------------------------------------------------------------------
1 | ## Creating an HTTP Redirect
2 |
3 | Azure Functions Proxies can be configured to return a custom response. You can use it to return custom HTTP status codes and headers. For a permanent redirect, respond with a 301 status code. For a temporary redirect, respond with 302. Indicate the URL to redirect to in the `Location` header.
4 |
5 | To configure proxies, edit `proxies.json`.
6 |
7 | ```json
8 | {
9 | "proxies": {
10 | "permanent redirect": {
11 | "matchCondition": {
12 | "methods": [
13 | "GET"
14 | ],
15 | "route": "/permanent"
16 | },
17 | "responseOverrides": {
18 | "response.statusCode": "301",
19 | "response.headers.Location": "https://docs.microsoft.com/"
20 | }
21 | },
22 | "temporary redirect": {
23 | "matchCondition": {
24 | "methods": [
25 | "GET"
26 | ],
27 | "route": "/temporary"
28 | },
29 | "responseOverrides": {
30 | "response.statusCode": "302",
31 | "response.headers.Location": "https://docs.microsoft.com/"
32 | }
33 | }
34 | }
35 | }
36 | ```
37 |
38 | [!include[](../includes/takeaways-heading.md)]
39 |
40 | - Azure Functions Proxies are configured using `proxies.json`.
41 | - Proxies can be used to set the status code and headers of an HTTP response.
42 |
43 | [!include[](../includes/read-more-heading.md)]
44 |
45 | - [Azure Functions Proxies documentation](https://docs.microsoft.com/azure/azure-functions/functions-proxies)
46 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/proxies-variables.md:
--------------------------------------------------------------------------------
1 | ## Referencing application settings
2 |
3 | Azure Functions Proxies configurations can reference application settings and other environment variables using `%` signs.
4 |
5 | To configure proxies, edit `proxies.json`.
6 |
7 | ```json
8 | {
9 | "proxies": {
10 | "statuses": {
11 | "matchCondition": {
12 | "methods": [
13 | "GET"
14 | ],
15 | "route": "/test/{id}"
16 | },
17 | "backendUri": "https://%WEBSITE_HOSTNAME%/{id}",
18 | "responseOverrides": {
19 | "response.statusCode": "200",
20 | "response.headers.Content-Type": "application/json",
21 | "response.body": {
22 | "id": "{id}",
23 | "value": "%DEFAULT_VALUE%"
24 | }
25 | }
26 | }
27 | }
28 | }
29 | ```
30 |
31 | [!include[](../includes/takeaways-heading.md)]
32 | - Azure Functions Proxies are configured using `proxies.json`.
33 | - Proxies configuration can reference environment variables and application settings.
34 |
35 | [!include[](../includes/read-more-heading.md)]
36 |
37 | - [Azure Functions Proxies documentation](https://docs.microsoft.com/azure/azure-functions/functions-proxies)
38 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/queue-storage-basic-output-queue.md:
--------------------------------------------------------------------------------
1 | ## Azure Storage Queue output binding
2 | Azure Storage Queues can be used as output bindings for your Azure Functions app. Using the `Queue` attribute allows you to make a parameter as a source to push queue messages. Some supported parameter types include:
3 |
4 | * out - a .NET POCO is serialized into JSON before being added to the message payload
5 | * out string
6 | * out byte[]
7 |
8 |
9 | ```csharp
10 | [FunctionName("BasicQueueOutput")]
11 | public static void Run([TimerTrigger("*/30 * * * * *")]TimerInfo myTimer,
12 | TraceWriter log,
13 | [Queue("101functionsqueue",Connection = "AzureWebJobsStorage")] out string queueMessage)
14 | {
15 | log.Info("101 Azure Function Demo - Storage Queue output");
16 |
17 | queueMessage = DateTime.UtcNow.ToString();
18 | }
19 | ```
20 |
21 | [!include[](../includes/takeaways-heading.md)]
22 | * Use the `Queue` attribute.
23 | * The `Queue` attribute requires the name of the queue and the name of the setting that holds the connection information for your storage account.
24 | * If POCOs, strings, and byte arrays are parameters of your function, they must be marked with the `out` keyword.
25 |
26 | [!include[](../includes/read-more-heading.md)]
27 | * [Create a function trigger by Azure Storage queue](https://docs.microsoft.com/azure/azure-functions/functions-create-storage-queue-triggered-function)
28 | * [Azure Functions triggers and bindings concepts](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings)
29 | * [Introduction to Queues](https://docs.microsoft.com/azure/storage/queues/storage-queues-introduction)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/queue-storage-basic-queue-trigger.md:
--------------------------------------------------------------------------------
1 | ## Triggering via Azure Storage Queue
2 | Storage Queues can be used as triggers for your functions.
3 |
4 | Using the `QueueTrigger` attribute, you can supply the queue along with the connection information for the storage account that should be used.
5 |
6 |
7 | ```csharp
8 | [FunctionName("FunctionsQueueTrigger")]
9 | public static void Run([QueueTrigger("101functionsqueue", Connection = "AzureWebJobsStorage")]string myQueueItem,
10 | TraceWriter log)
11 | {
12 | log.Info($"C# Queue trigger function processed: {myQueueItem}");
13 | }
14 |
15 | ```
16 |
17 | [!include[](../includes/takeaways-heading.md)]
18 | * Use the `QueueTrigger` attribute to trigger your function via an Azure Storage Queue.
19 | * `QueueTrigger` requires the name of the queue and the name of the setting that holds the connection information for your storage account.
20 |
21 | [!include[](../includes/read-more-heading.md)]
22 | * [Create a function trigger by Azure Storage queue](https://docs.microsoft.com/azure/azure-functions/functions-create-storage-queue-triggered-function)
23 | * [Azure Functions triggers and bindings concepts](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings)
24 | * [Introduction to Queues](https://docs.microsoft.com/azure/storage/queues/storage-queues-introduction)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/queue-storage-output-queue-collectors.md:
--------------------------------------------------------------------------------
1 | ## Using ICollector with Azure Storage Queue bindings
2 | `ICollector` and `IAsyncCollector` can be used as parameter types for Storage Queue output bindings. Using these interfaces allows you to add multiple messages to the respective Storage Queue.
3 |
4 | ```csharp
5 | [FunctionName("CollectorQueueOutput")]
6 | public static void Run([TimerTrigger("*/30 * * * * *")]TimerInfo myTimer,
7 | TraceWriter log,
8 | [Queue("101functionsqueue", Connection = "AzureWebJobsStorage")] ICollector queueCollector)
9 | {
10 | log.Info("101 Azure Function Demo - Storage Queue output");
11 |
12 | queueCollector.Add(new Customer { FirstName = "John" });
13 | }
14 | ```
15 |
16 | [!include[](../includes/takeaways-heading.md)]
17 | * Use the `QueueTrigger` attribute to trigger your function via an Azure Storage Queue.
18 | * `QueueTrigger` requires the name of the queue and the name of the setting that holds the connection information for your storage account.
19 | * The queue name and connection values are required.
20 |
21 | [!include[](../includes/read-more-heading.md)]
22 | * [Create a function trigger by Azure Storage queue](https://docs.microsoft.com/azure/azure-functions/functions-create-storage-queue-triggered-function)
23 | * [Azure Functions triggers and bindings concepts](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings)
24 | * [Introduction to Queues](https://docs.microsoft.com/azure/storage/queues/storage-queues-introduction)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/queue-storage-poision-queue-messages.md:
--------------------------------------------------------------------------------
1 | ## Poison queue messages with Azure Storage Queue Triggers
2 | If a function triggered by a `QueueTrigger` fails, the Azure Functions runtime automatically retries that function five times for that specific queue message.
3 | If the message continues to fail, then the bad message is moved to a "poison" queue. The name of the queue will be based on the original + "-poison".
4 |
5 | For example, a storage queue named `myqueue` results in a poison queue named `myqueue-poison`.
6 |
7 |
8 | ```csharp
9 | [FunctionName("PoisionQueues")]
10 | public static void Run([QueueTrigger("101functionsqueue", Connection = "AzureWebJobsStorage")]CloudQueueMessage myQueueItem, TraceWriter log)
11 | {
12 | log.Info("101 Azure Function Demo - Poision Queue Messages");
13 |
14 | log.Info($"Queue ID: {myQueueItem.Id}");
15 | log.Info($"Queue Dequeue Count: {myQueueItem.DequeueCount}");
16 | log.Info($"Queue Payload: {myQueueItem.AsString}");
17 |
18 | throw new Exception("Intentional failure");
19 | }
20 | ```
21 |
22 | After letting the code above run, there should be a queue names `101functionsqueue-poison` with the message that failed to process.
23 |
24 | [!include[](../includes/takeaways-heading.md)]
25 | * Using `CloudQueueMessage`, metadata such as the message dequeue count can be retrieved.
26 | * Five attempts are made to process a queue message before moving it to a poison queue.
27 |
28 |
29 | [!include[](../includes/read-more-heading.md)]
30 | * [Azure Functions triggers and bindings concepts](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings)
31 | * [Azure Functions Queue Storage bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-storage-queue#trigger-sample)
32 | * [Introduction to Queues](https://docs.microsoft.com/azure/storage/queues/storage-queues-introduction)
33 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/queue-storage-queue-trigger-with-poco.md:
--------------------------------------------------------------------------------
1 | ## Azure Storage Queue Trigger using a POCO
2 | If your queue message is made up of a JSON payload, the runtime serializes it into a plain old CLR object (POCO) for you.
3 |
4 | ```csharp
5 | [FunctionName("SimpleQueue")]
6 | public static void Run([QueueTrigger("101functionsqueue", Connection = "AzureWebJobsStorage")]Customer queuedCustomer, TraceWriter log)
7 | {
8 | log.Info("101 Azure Functions Demo - Queue Trigger w/ POCO");
9 |
10 | log.Info($"Customer Name: {queuedCustomer.FirstName}");
11 | }
12 | ```
13 |
14 | [!include[](../includes/takeaways-heading.md)]
15 | * JSON payloads can be deserialized into POCO objects
16 | * JSON .NET types can also be used, for example, `JObject`, `JArray`
17 |
18 | [!include[](../includes/read-more-heading.md)]
19 | * [Create a function trigger by Azure Storage queue](https://docs.microsoft.com/azure/azure-functions/functions-create-storage-queue-triggered-function)
20 | * [Azure Functions triggers and bindings concepts](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings)
21 | * [Introduction to Queues](https://docs.microsoft.com/azure/storage/queues/storage-queues-introduction)
22 | * [JSON .NET Documentation](https://www.newtonsoft.com/json/help/html/Introduction.htm)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/queue-storage-retrieving-queue-metadata.md:
--------------------------------------------------------------------------------
1 | ## Retrieving queue metadata from an Azure Storage Queue Trigger
2 | With Storage Queue triggers, the `CloudQueueMessage` class can be used to retrieve metadata about the queue message.
3 | Some common properties include:
4 |
5 | * DequeueCount - The number of times this message has been dequeued.
6 | * ExpirationTime - The time that the message expires.
7 | * ID - Queue message ID.
8 | * InsertionTime - The time that the message was added to the queue.
9 |
10 | ```csharp
11 | [FunctionName("QueueTriggerMetadata")]
12 | public static void Run([QueueTrigger("101functionsqueue", Connection = "AzureWebJobsStorage")]CloudQueueMessage myQueueItem, TraceWriter log)
13 | {
14 | log.Info("101 Azure Function Demo - Retrieving Queue metadata");
15 |
16 | log.Info($"Queue ID: {myQueueItem.Id}");
17 | log.Info($"Queue Insertion Time: {myQueueItem.InsertionTime}");
18 | log.Info($"Queue Expiration Time: {myQueueItem.ExpirationTime}");
19 | log.Info($"Queue Payload: {myQueueItem.AsString}");
20 | }
21 | ```
22 |
23 | [!include[](../includes/takeaways-heading.md)]
24 | * Using `CloudQueueMessage` as a queue trigger parameter enables metadata retrieval.
25 | * The `AsBytes` and `AsString` methods can be used to return the message payload in the respective format.
26 |
27 | [!include[](../includes/read-more-heading.md)]
28 | * [Azure Functions triggers and bindings concepts](https://docs.microsoft.com/azure/azure-functions/functions-triggers-bindings)
29 | * [Azure Functions Queue Storage bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-storage-queue#using-a-queue-trigger)
30 | * [Introduction to Queues](https://docs.microsoft.com/azure/storage/queues/storage-queues-introduction)
31 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/read-more-heading.md:
--------------------------------------------------------------------------------
1 | ### Read more
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/routes-azureportal.md:
--------------------------------------------------------------------------------
1 | ## Define the function route in the Azure portal
2 |
3 | Routes can also be controlled from the integrate tab of your function in the Azure portal.
4 |
5 | 
6 |
7 | Enter the route that you want your function to have in the Route template box on the page.
8 |
9 | 
10 |
11 | [!include[](../includes/takeaways-heading.md)]
12 |
13 | - The Azure portal allows you to change your routes in the Integrate tab.
14 | - If you are using continuous deployment for your functions, any settings changed will be reset on redeployment.
15 |
16 | [!include[](../includes/read-more-heading.md)]
17 |
18 | - [Settings for HTTP and webhook bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/routes-infunction.md:
--------------------------------------------------------------------------------
1 | ## Define the function route with function properties
2 |
3 | There are several ways to define function routes. One of those ways is in the function header.
4 |
5 | # [C#](#tab/csharp)
6 |
7 | ```csharp
8 | [FunctionName("Example")]
9 | public static async Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET", Route="Example")]HttpRequestMessage req,
10 | TraceWriter log)
11 | {
12 | log.Info($"C# HTTP trigger function processed a request");
13 |
14 | return new HttpResponseMessage(HttpStatusCode.Accepted);
15 | }
16 | ```
17 |
18 | # [F#](#tab/fsharp)
19 |
20 | ```fsharp
21 | []
22 | let Run([] req: HttpRequestMessage,
23 | log: TraceWriter) =
24 | log.Info "F# HTTP trigger function processed a request"
25 | new HttpResponseMessage(HttpStatusCode.Accepted)
26 | ```
27 |
28 | Adding the Route property to the HttpTrigger attribute allows you to customize the route of your function. The above function is called with http://yoururl/api/example. But if we change `Route="Example"` to `Route="Example/MyExample"` the url becomes http://yoururl/api/example/myexample. It can also be left blank so that it can be called by http://yoururl/api/.
29 |
30 | [!include[](../includes/takeaways-heading.md)]
31 |
32 | - Routes can be customized using the Route property inside of Trigger attributes.
33 | - The function route does not have to match the name of the function.
34 |
35 | [!include[](../includes/read-more-heading.md)]
36 |
37 | - [Azure Functions HTTP and webhook bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/routes-optionalparameters.md:
--------------------------------------------------------------------------------
1 | ## Making route parameters optional
2 |
3 | In order to make route parameters optional in your function call, add a `?` after the parameter name in the route definition and the type in the function header.
4 |
5 | # [C#](#tab/csharp)
6 |
7 | ```csharp
8 | [FunctionName("Example")]
9 | public static async Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET", Route="Example/{parameter?}")]HttpRequestMessage req,
10 | string parameter,
11 | TraceWriter log)
12 | {
13 | log.Info($"C# HTTP trigger function processed a request {parameter}");
14 |
15 | return new HttpResponseMessage(HttpStatusCode.Accepted);
16 | }
17 | ```
18 |
19 | # [F#](#tab/fsharp)
20 |
21 | ```fsharp
22 | []
23 | let Run([] req: HttpRequestMessage,
24 | parameter: string,
25 | log: TraceWriter) =
26 | log.Info(sprintf "F# HTTP trigger function processed a request %s" parameter)
27 | new HttpResponseMessage(HttpStatusCode.Accepted)
28 | ```
29 |
30 | If you are specifying a parameter type, put the `?` after the type name like so: `{parameter:int?}`
31 |
32 | [!include[](../includes/takeaways-heading.md)]
33 |
34 | - Parameters can be optional in functions.
35 | - All you need to do to make them optional is add a `?` after the parameter in the route.
36 |
37 | [!include[](../includes/read-more-heading.md)]
38 |
39 | - [Azure Functions HTTP and webhook bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/routes-prefixes.md:
--------------------------------------------------------------------------------
1 | ## Controlling the route prefix with host.json
2 |
3 | By default Azure Functions has a route prefix on all functions /api/. To change this, access the routePrefix property in the http field of host.json. To remove it completely, leave the field blank.
4 |
5 | ```json
6 | {
7 | "http": {
8 | "routePrefix": ""
9 | }
10 | }
11 | ```
12 |
13 | This would turn http://yourUrl/api/Example into http://yourUrl/Example.
14 |
15 | [!include[](../includes/takeaways-heading.md)]
16 |
17 | - Route prefixes are customizable and removable using host.json.
18 |
19 | [!include[](../includes/read-more-heading.md)]
20 |
21 | - [More on host.json](https://github.com/Azure/azure-webjobs-sdk-script/wiki/host.json)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/routes-routeparameters.md:
--------------------------------------------------------------------------------
1 | ## Adding parameters to function routes
2 |
3 | To add parameters to your route, put the parameter in curly braces in the route property of the HttpTrigger attribute, and add it in the method parameters.
4 |
5 | # [C#](#tab/csharp)
6 |
7 | ```csharp
8 | [FunctionName("Example")]
9 | public static async Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "GET", Route="Example/{parameter}")]HttpRequestMessage req,
10 | string parameter,
11 | TraceWriter log)
12 | {
13 | log.Info($"C# HTTP trigger function processed a request {parameter}");
14 |
15 | return new HttpResponseMessage(HttpStatusCode.Accepted);
16 | }
17 | ```
18 |
19 | # [F#](#tab/fsharp)
20 |
21 | ```fsharp
22 | []
23 | let Run([] req: HttpRequestMessage,
24 | parameter: string,
25 | log: TraceWriter) =
26 | log.Info(sprintf "F# HTTP trigger function processed a request %s" parameter)
27 | new HttpResponseMessage(HttpStatusCode.Accepted)
28 | ```
29 |
30 | If only the parameter name is entered, it defaults to type string. If you want to use another type, enter the parameter as `{parameter:type}` to change the type. If you do this, you will also need to change the type in the function header.
31 |
32 | [!include[](../includes/takeaways-heading.md)]
33 |
34 | - Parameters are defined in the route surrounded with curly braces, and must also be defined in the method parameters.
35 | - This works whether you define the route in the function header, function.json, or Azure portal.
36 |
37 | [!include[](../includes/read-more-heading.md)]
38 |
39 | - [Azure Functions HTTP and webhook bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/service-bus-basic-servicebus-output.md:
--------------------------------------------------------------------------------
1 | ## Azure Service Bus output binding
2 | Azure Service Bus can be used as output bindings for your Azure Functions app. Using the `ServiceBus` attribute allows you to take a parameter as a source to push queue messages. Some supported parameter types include:
3 |
4 | * `out ` - a .NET object is serialized into JSON before being added to the message payload
5 | * `out string`
6 | * `out byte[]`
7 |
8 |
9 | ```csharp
10 | [FunctionName("ServiceBusOutput")]
11 | public static void Run([TimerTrigger("0/10 * * * * *")]TimerInfo myTimer,
12 | TraceWriter log,
13 | [ServiceBus("funcqueue", Connection = "ConnectionSetting", EntityType = EntityType.Queue)]out string queueMessage)
14 | {
15 | log.Info("101 Azure Function Demo - Azure Service Bus Queue output");
16 |
17 | queueMessage = DateTime.UtcNow.ToString();
18 | }
19 | ```
20 |
21 | [!include[](../includes/takeaways-heading.md)]
22 | * Use the `ServiceBus` attribute to specify the output binding to an Azure Service Bus Queue.
23 | * The `ServiceBus` attribute requires the name of the queue, an `EntityType`, and the name of the setting for the Azure Service Bus connection string.
24 | * If POCOs, strings, and byte arrays are parameters of your function, they must be marked with the `out` keyword.
25 |
26 | [!include[](../includes/read-more-heading.md)]
27 | * [Azure Functions Service Bus bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-service-bus)
28 | * [Service Bus Messaging documentations](https://docs.microsoft.com/azure/service-bus-messaging/)
29 | * [Service Bus client samples](https://github.com/Azure/azure-service-bus/tree/master/samples)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/service-bus-output-collectors.md:
--------------------------------------------------------------------------------
1 | ## Using ICollector with Service Bus queue bindings
2 | `ICollector` and `IAsyncCollector` can be used as parameter types for Azure Service Bus output bindings. Using these interfaces allows you to add multiple messages to the respective Service Bus queue or topic.
3 |
4 | ```csharp
5 | [FunctionName("CollectorQueueOutput")]
6 | public static void Run([TimerTrigger("*/10 * * * * *")]TimerInfo myTimer,
7 | TraceWriter log,
8 | [ServiceBus("funcqueue", Connection = "ConnectionSetting", EntityType = EntityType.Queue)] ICollector queueCollector)
9 | {
10 | log.Info("101 Azure Function Demo - Azure Service Bus output");
11 |
12 | queueCollector.Add(DateTime.UtcNow.ToString());
13 | queueCollector.Add("Sample");
14 | queueCollector.Add("Message");
15 | }
16 | ```
17 |
18 | [!include[](../includes/takeaways-heading.md)]
19 | * Using `ICollector` or `IAsyncCollector` allows you to output multiple messages to a Service Bus queue or topic.
20 |
21 | [!include[](../includes/read-more-heading.md)]
22 | * [Azure Functions Service Bus bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-service-bus)
23 | * [Service Bus Messaging documentations](https://docs.microsoft.com/azure/service-bus-messaging/)
24 | * [Service Bus client samples](https://github.com/Azure/azure-service-bus/tree/master/samples)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/service-bus-retrieving-servicebus-queue-metadata.md:
--------------------------------------------------------------------------------
1 | ## Retrieving queue metadata from an Azure Service Bus Queue/Topic Trigger
2 | With the Service Bus Trigger, the `BrokeredMessage` class can be used to retrieve metadata about the queue message.
3 |
4 | Some common properties include:
5 | * `ContentType` - Type of the message content
6 | * `MessageId` - User-defined identifier
7 | * `Size` - Size of the message in bytes
8 | * `ExpiresAtUtc` - Date and time in UTC when the message expires
9 |
10 | ```csharp
11 | [FunctionName("ServiceBusQueuesTrigger")]
12 | public static void Run([ServiceBusTrigger("funcqueue", AccessRights.Manage, Connection = "Func101SB")]BrokeredMessage queueMessage,
13 | TraceWriter log)
14 | {
15 | log.Info("101 Azure Function Demo - Service Bus Queue Trigger");
16 |
17 | log.Info($"Message ID: {queueMessage.MessageId}");
18 | log.Info($"Message Content Type: {queueMessage.ContentType}");
19 | }
20 |
21 | ```
22 |
23 | [!include[](../includes/takeaways-heading.md)]
24 | * Use `BrokeredMessage` if you need access to properties of the input message.
25 |
26 | [!include[](../includes/read-more-heading.md)]
27 | * [Azure Functions Service Bus bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-service-bus)
28 | * [Service Bus Messaging documentation](https://docs.microsoft.com/azure/service-bus-messaging/)
29 | * [Service Bus client samples](https://github.com/Azure/azure-service-bus/tree/master/samples)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/service-bus-trigger.md:
--------------------------------------------------------------------------------
1 | ## Triggering functions from Azure Service Bus Queues and Topics
2 | Queues and Topics from Azure Service Bus can be used as triggers for your functions.
3 |
4 | Using the `ServiceBusTrigger` attribute, you can supply the queue or topic name, along with the connection information for the Service Bus instance.
5 |
6 | ```csharp
7 | [FunctionName("ServiceBusQueueTrigger")]
8 | public static void Run([ServiceBusTrigger("funcqueue", AccessRights.Manage, Connection = "ConnectionSetting")]string queueMessage,
9 | TraceWriter log)
10 | {
11 | log.Info("101 Azure Function Demo - Service Bus Queue Trigger");
12 |
13 | log.Info($"C# ServiceBus queue trigger function processed message: {queueMessage}");
14 | }
15 | ```
16 | Topic Trigger
17 | ```csharp
18 | [FunctionName("ServiceBusTopicTrigger")]
19 | public static void RunTopic([ServiceBusTrigger("functopic", "sampletopic", AccessRights.Manage, Connection = "ConnectionSetting")]string topicMessage,
20 | TraceWriter log)
21 | {
22 | log.Info("101 Azure Function Demo - Service Bus Topic Trigger");
23 |
24 | log.Info($"C# ServiceBus topic trigger function processed message: {topicMessage}");
25 | }
26 |
27 | ```
28 | [!include[](../includes/takeaways-heading.md)]
29 | * Use the `ServiceBusTrigger` attribute to specify the Azure Service Bus instance.
30 | * For queues, `ServiceBusTrigger` requires the queue name, and the name of the setting that has connection information.
31 | * For topics, `ServiceBusTrigger` requires the topic name, subscription name, and the name of the setting that has connection information.
32 |
33 | [!include[](../includes/read-more-heading.md)]
34 | * [Azure Functions Service Bus bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-service-bus)
35 | * [Service Bus Messaging documentation](https://docs.microsoft.com/azure/service-bus-messaging/)
36 | * [Service Bus client samples](https://github.com/Azure/azure-service-bus/tree/master/samples)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/table-storage-input-binding.md:
--------------------------------------------------------------------------------
1 | ## Table storage input binding
2 |
3 | Defining a binding between an Azure Function and a table in a storage account can be defined in two different ways.
4 |
5 | The sample functions presented here do not include a trigger and do not work as-is.
6 |
7 | Bindings can be declared through code in C# using the `TableAttribute`.
8 |
9 | ```csharp
10 | public static void Run([Table("Persons")]ICollector tableBinding, TraceWriter log)
11 | {
12 | tableBinding.Add(
13 | new Person() {
14 | PartitionKey = "Default",
15 | RowKey = 1,
16 | Name = "Some name" }
17 | );
18 | }
19 | ```
20 |
21 | Bindings can also be declared through a configuration file. To do so, create a `functions.json` file and define your binding. This binding automatically adds the objects added to the `ICollector` to the defined table.
22 |
23 | ```json
24 | {
25 | "bindings": [
26 | {
27 | "type": "table",
28 | "name": "tableBindings",
29 | "tableName": "Person",
30 | "direction": "out"
31 | }
32 | ],
33 | "disabled": false
34 | }
35 |
36 | ```
37 |
38 | ```csharp
39 | public static void Run(ICollector tableBinding, TraceWriter log)
40 | {
41 | tableBinding.Add(
42 | new Person() {
43 | PartitionKey = "Default",
44 | RowKey = 1,
45 | Name = "Some name" }
46 | );
47 | }
48 | ```
49 | [!include[](../includes/read-more-heading.md)]
50 |
51 | See the [full Table Storage documentation](https://docs.microsoft.com/azure/azure-functions/functions-bindings-storage-table).
52 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/takeaways-heading.md:
--------------------------------------------------------------------------------
1 | ### Takeaways
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/timer-trigger.md:
--------------------------------------------------------------------------------
1 | ## Timer Trigger Function
2 |
3 | Functions can be triggered on a schedule. This examples logs the time, and the next 5 occurrences when a function timer is triggered or logs when it is late.
4 |
5 | ```csharp
6 | using System;
7 |
8 | public static void Run(TimerInfo myTimer, TraceWriter log)
9 | {
10 | if(myTimer.IsPastDue)
11 | {
12 | log.Info("Timer is late!");
13 | }
14 |
15 | log.Info($"C# Timer trigger function executed at: {DateTime.Now}.\n{myTimer.FormatNextOccurrences(5)}");
16 | }
17 | ```
18 |
19 | [!include[](../includes/takeaways-heading.md)]
20 |
21 | - Use `IsPastDue` to find out if a timer trigger is delayed.
22 | - The trigger schedule can be altered in the Integrate section of your function in the Azure portal, or in the function's `function.json` file.
23 |
24 | [!include[](../includes/read-more-heading.md)]
25 |
26 | - [Create a function in Azure that is triggered by a timer](https://docs.microsoft.com/azure/azure-functions/functions-create-scheduled-function)
27 | - [Azure Functions timer trigger](https://docs.microsoft.com/azure/azure-functions/functions-bindings-timer)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/visual-studio-function-tools.md:
--------------------------------------------------------------------------------
1 | ## Installing Visual Studio Functions Tools
2 |
3 | Azure Function tools for Visual Studio is an extension that provides easy development, deployment, and testing of functions within Visual Studio. You can install function tools in Visual Studio 2017 through the Extensions and Updates dialog in the Tools menu. To bring the extension to the top of the search results, type "Azure function" in the search box. Once downloaded,the extension will be ready for use after Visual Studio is restarted.
4 |
5 | 
6 |
7 | [!include[](../includes/takeaways-heading.md)]
8 |
9 | - Azure Function Tools for Visual Studio can be installed through the Extension and Updates dialog within Visual Studio.
10 | - You can create, test, and deploy functions within Visual Studio with Azure Function Tools for Visual Studio.
11 |
12 | [!include[](../includes/read-more-heading.md)]
13 |
14 | - [Azure Functions Tools for Visual Studio](https://msdn.microsoft.com/library/azure/microsoft.azure.documents.client.documentclient.aspx)
15 | - [Code and test Azure functions locally](https://docs.microsoft.com/azure/azure-functions/functions-run-local)
16 | - [.NET Web Development and Tools Blog - Visual Studio 2017 Tools for Azure Functions](https://blogs.msdn.microsoft.com/webdev/2017/05/10/azure-function-tools-for-visual-studio-2017/)
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/includes/vscode-function-tools.md:
--------------------------------------------------------------------------------
1 | ## Installing Visual Studio Code Functions Tools
2 |
3 | Azure Function tools for Visual Studio Code is an extension that provides easy development of functions with Intellisense for `host.json`, `function.json` and `proxies.json`. To bring the extension to the top of the search results, type "Azure function" in the search box.
4 |
5 | 
6 |
7 | [!include[](../includes/takeaways-heading.md)]
8 |
9 | - Azure Functions Tools for Visual Studio Code can be installed in the Extensions menu.
10 |
11 | [!include[](../includes/read-more-heading.md)]
12 |
13 | - [Azure Functions Tools for VS Code GitHub Repository](https://github.com/johnpapa/vscode-azure-functions-tools)
14 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/index.yml:
--------------------------------------------------------------------------------
1 | ### YamlMime:YamlDocument
2 | documentType: LandingData
3 | title: Azure Functions Recipes
4 | metadata:
5 | document_id: 82e6a19c-bcea-4072-80c0-ec505ae125a5
6 | title: The Sandbox - Azure Functions Recipes
7 | description: A collection of focused code snippets for Azure
8 | keywords: Azure, .NET, Azure Functions
9 | author: cecilphillip
10 | ms.author: cephilli
11 | manager: scottca
12 | ms.date: 13/12/2017
13 | ms.topic: article
14 | featureFlags:
15 | - clicktale
16 | ms.service: functions
17 | sections:
18 | - items:
19 | - type: markdown
20 | text: |
21 | Functions recipes are a collection of community-maintained tips and tricks for working with Azure Functions. Each recipe is a code snippet that demonstrates a single concept.
22 | - items:
23 | - type: list
24 | style: cards
25 | className: cardsM
26 | columns: 2
27 | items:
28 | - title: Functions basics
29 | html: This section contains common tweaks and settings for most Functions apps.
30 | href: functions-basics
31 | image:
32 | src: https://docs.microsoft.com/azure/media/index/AzureFunctions.svg
33 | - title: Triggers and bindings
34 | html: These sample briefly go through how the various triggers and bindings works
35 | href: triggers-bindings
36 | image:
37 | src: https://docs.microsoft.com/azure/media/index/AzureFunctions.svg
38 | - title: Development environment
39 | html: Learn how to setup your development environment to going with developing Functions apps.
40 | href: development-environment
41 | image:
42 | src: https://docs.microsoft.com/azure/media/index/AzureFunctions.svg
43 | - title: Durable Functions
44 | html: Find out how to create stateful workflows with Azure Functions
45 | href: durable-functions
46 | image:
47 | src: https://docs.microsoft.com/azure/media/index/AzureFunctions.svg
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/logging.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Logging and monitoring
3 | description: Tips and tricks for logging and monitoring Azure Functions
4 | author: cecilphillip
5 | manager: scottca
6 | keywords: azure functions, functions, logging, monitoring, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: csharp
9 | ms.topic: article
10 | ms.workload: na
11 | ms.date: 10/12/2017
12 | ---
13 |
14 | # Logging and monitoring
15 |
16 | [!include[](includes/logging-ilogger.md)]
17 |
18 | [!include[](includes/logging-tracewriter.md)]
19 |
20 | [!include[](includes/logging-using-third-party-logger.md)]
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/manual.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Manual trigger | Microsoft Docs
3 | description: Tips and tricks for using the manual trigger in Azure Functions
4 | author: MaximRouiller
5 | manager: scottca
6 | keywords: azure functions, functions, manual trigger, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: marouill
12 | ---
13 |
14 | ## Manual Triggers
15 |
16 | [!include[](includes/manual-trigger.md)]
17 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/azure-funtion-vs-ext.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/azure-funtion-vs-ext.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/azure-funtion-vscode-ext.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/azure-funtion-vscode-ext.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/create-function-app-portal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/create-function-app-portal.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/create-function-portal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/create-function-portal.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/function-app-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/function-app-settings.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/function-overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/function-overview.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/function-portal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/function-portal.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/integrate-http-methods.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/integrate-http-methods.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/integrate-tab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/integrate-tab.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/integratepage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/integratepage.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/integratetab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/integratetab.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/manage-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/manage-page.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/media/manage-tab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/functions-recipes/media/manage-tab.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/portal.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Azure portal | Microsoft Docs
3 | description: Tips and tricks for working with Azure Functions in the Azure portal
4 | author: conradttabor
5 | manager: scottca
6 | keywords: azure functions, functions, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ---
12 |
13 | # Azure Portal Environment Tips
14 |
15 | [!include[](includes/portal-functions-in-portal.md)]
16 |
17 | [!include[](includes/portal-environment-controlling-http-verbs.md)]
18 |
19 | [!include[](includes/portal-environment-keys.md)]
20 |
21 | [!include[](includes/portal-environment-daily-usage-quota.md)]
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/proxies.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Proxies
3 | description: Tips and tricks for working with Azure Functions proxies
4 | author: anthonychu
5 | manager: scottca
6 | keywords: azure functions, functions, proxies, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: antchu
12 | ---
13 |
14 | # Proxies
15 |
16 | [!include[](includes/proxies-proxies-json.md)]
17 |
18 | [!include[](includes/proxies-redirects.md)]
19 |
20 | [!include[](includes/proxies-mock-api.md)]
21 |
22 | [!include[](includes/proxies-conditional-responses.md)]
23 |
24 | [!include[](includes/proxies-variables.md)]
25 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/queue-storage.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Storage queues | Microsoft Docs
3 | description: Tips and tricks for using Azure Functions with Storage queues
4 | author: cecilphillip
5 | manager: scottca
6 | keywords: azure functions, functions, storage queues, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: cephilli
12 | ---
13 |
14 | # Storage Queue Trigger Samples
15 |
16 | [!include[](includes/queue-storage-basic-queue-trigger.md)]
17 |
18 | [!include[](includes/queue-storage-queue-trigger-with-poco.md)]
19 |
20 | [!include[](includes/queue-storage-retrieving-queue-metadata.md)]
21 |
22 | [!include[](includes/queue-storage-poision-queue-messages.md)]
23 |
24 | [!include[](includes/queue-storage-basic-output-queue.md)]
25 |
26 | [!include[](includes/queue-storage-output-queue-collectors.md)]
27 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/routes.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - HTTP Routing | Microsoft Docs
3 | description: Tips and tricks for working with HTTP routing in Azure Functions
4 | author: conradttabor
5 | manager: scottca
6 | keywords: azure functions, functions, routing, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: csharp
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ---
12 |
13 |
14 | # HTTP routing
15 |
16 | [!include[](includes/routes-prefixes.md)]
17 |
18 | [!include[](includes/routes-infunction.md)]
19 |
20 | [!include[](includes/routes-azureportal.md)]
21 |
22 | [!include[](includes/routes-routeparameters.md)]
23 |
24 | [!include[](includes/routes-optionalparameters.md)]
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/service-bus.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Service Bus | Microsoft Docs
3 | description: Tips and tricks for using Azure Functions with Service Bus
4 | author: cecilphillip
5 | manager: scottca
6 | keywords: azure functions, functions, service bus, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: cephilli
12 | ---
13 |
14 | # Service Bus Triggers and Bindings Samples
15 |
16 | [!include[](includes/service-bus-trigger.md)]
17 |
18 | [!include[](includes/service-bus-output-collectors.md)]
19 |
20 | [!include[](includes/service-bus-retrieving-servicebus-queue-metadata.md)]
21 |
22 | [!include[](includes/service-bus-basic-servicebus-output.md)]
23 |
24 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/table-storage.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Table Storage | Microsoft Docs
3 | description: Tips and tricks for using Azure Functions with Table Storage
4 | author: MaximRouiller
5 | manager: scottca
6 | keywords: azure functions, functions, table storage, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: marouill
12 | ---
13 |
14 | ## Table storage triggers and bindings
15 |
16 | [!include[](includes/table-storage-input-binding.md)]
17 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/timer.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Timer Trigger | Microsoft Docs
3 | description: Tips and tricks for using scheduled Azure Functions
4 | author: paladique
5 | manager: scottca
6 | keywords: azure functions, functions, timer, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: jasmineg
12 | ---
13 |
14 | # Timer trigger
15 |
16 | [!include[](includes/timer-trigger.md)]
17 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/visual-studio.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Visual Studio Tools | Microsoft Docs
3 | description: Tips and tricks for using the Azure Functions Tools in Visual Studio
4 | author: paladique
5 | manager: scottca
6 | keywords: azure functions, functions, visual studio, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: jasmineg
12 | ---
13 |
14 | # Azure Functions in Visual Studio
15 |
16 | [!include[](includes/visual-studio-function-tools.md)]
17 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/functions-recipes/vscode.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Azure Functions Recipes - Visual Studio Code | Microsoft Docs
3 | description: Tips and tricks for using Azure Functions in Visual Studio Code
4 | author: paladique
5 | manager: scottca
6 | keywords: azure functions, functions, vs code, dynamic compute, serverless architecture
7 | ms.service: functions
8 | ms.devlang: dotnet
9 | ms.topic: article
10 | ms.date: 10/12/2017
11 | ms.author: jasmineg
12 | ---
13 |
14 | # Azure Functions in Visual Studio Code
15 |
16 | [!include[](includes/vscode-function-tools.md)]
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/index.yml:
--------------------------------------------------------------------------------
1 | ### YamlMime:Landing
2 |
3 | title: Azure for Game Developers documentation # < 60 chars
4 | summary: Get started with developing games that use Azure. # < 160 chars
5 |
6 | metadata:
7 | title: Azure for Game Developers documentation # Required; page title displayed in search results. Include the brand. < 60 chars.
8 | description: Get started with developing games that use Azure. # Required; article description that is displayed in search results. < 160 chars.
9 | ms.service: multiple #Required; service per approved list. service slug assigned to your service by ACOM.
10 | ms.topic: landing-page # Required
11 | author: brianpeek #Required; your GitHub user alias, with correct capitalization.
12 | ms.author: brpeek #Required; microsoft alias of author; optional team alias.
13 | ms.date: 05/03/2017 #Required; mm/dd/yyyy format.
14 |
15 | # linkListType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | sample | tutorial | video | whats-new
16 |
17 | landingContent:
18 | # Cards and links should be based on top customer tasks or top subjects
19 | # Start card title with a verb
20 | # Card (optional)
21 | - title: Azure Gaming SDKs
22 | linkLists:
23 | - linkListType: overview
24 | links:
25 | - text: Azure Storage SDK for Unity
26 | url: unity/azure-storage-unity.md
27 | - text: Azure Event Hubs SDK for Unity
28 | url: unity/azure-event-hubs-unity.md
29 | - text: Azure Mobile Apps SDK for Unity
30 | url: unity/azure-mobile-apps-unity.md
31 | - text: Azure SDKs for MonoGame
32 | url: monogame/azure-monogame.md
33 | - text: Azure Storage SDK for Unreal Engine
34 | url: unreal/azure-storage-unreal.md
35 |
36 | # Card (optional)
37 | - title: Azure Gaming Samples
38 | linkLists:
39 | - linkListType: overview
40 | links:
41 | - text: Azure Easy Tables and Unity
42 | url: unity/samples/azure-mobile-apps-unity-racer.md
43 | - text: Azure Storage Bird
44 | url: unity/samples/azure-storage-bird.md
45 | - text: Facebook Authentication and Unity
46 | url: unity/samples/azure-facebook-auth-unity.md
47 | - text: Other Samples
48 | url: azure-gaming-samples.md
49 |
50 | # Card (optional)
51 | - title: Tools and Utilities
52 | linkLists:
53 | - linkListType: overview
54 | links:
55 | - text: NuGet2Unity
56 | url: unity/nuget2unity.md
57 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/media/event-hubs-connectionstring.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/media/event-hubs-connectionstring.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/media/event-hubs-name.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/media/event-hubs-name.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/media/mobile-apps-uri.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/media/mobile-apps-uri.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/media/monogame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/media/monogame.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/media/storage-keys.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/media/storage-keys.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/media/unity.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/media/unity.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/media/unreal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/media/unreal.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/monogame/azure-monogame.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Using Azure SDKs with MonoGame
3 | description: Using Azure SDKs with MonoGame
4 | author: BrianPeek
5 | manager: timheuer
6 | keywords: unity, azure, storage
7 | ms.topic: article
8 | ms.date: 11/08/2017
9 | ms.author: brpeek
10 | #ms.devlang:
11 | #ms.prod:
12 | #ms.technology:
13 | #ms.service:
14 | ---
15 | # Using Azure SDKs with MonoGame
16 |
17 | [!include[](../../includes/header.md)]
18 |
19 | [](https://github.com/BrianPeek/AzureSamples-MonoGame)
20 |
21 | ## Requirements
22 |
23 | * [MonoGame 3.6 or higher (earlier versions may work)](https://www.monogame.net/)
24 | * [An Azure account (Sign up for free!)](https://aka.ms/azfreegamedev)
25 |
26 | ## Compatibility
27 |
28 | This has been tested with the following projects. Others may work, so please let us know if you've had success!
29 |
30 | * Windows
31 | * UWP
32 | * iOS
33 | * Android
34 |
35 | ## Known Issues and Limitations
36 |
37 | * None
38 |
39 | ## How to Use It
40 |
41 | Because MonoGame uses the traditional .NET Framework and CLR on Windows, and Xamarin on other platforms, the existing .NET Azure SDK NuGet packages work as-is across all platforms. For example, to use the Azure Storage SDK, simply add a NuGet package reference to the **WindowsAzure.Storage** package as described below.
42 |
43 | 1. Click the **Projects > Manage NuGet Packages** menu.
44 |
45 | 1. In the NuGet Package Manager window, enter **azure storage** in the search box. The **WindowsAzure.Storage** package will appear.
46 |
47 | 1. Highlight this package, then click the **Install** button on the right side of the window.
48 |
49 | 1. Accept any license prompts, and the package will be installed.
50 |
51 | 
52 |
53 | With the package added, you can now use the Azure Storage SDK API (or the SDK you've chosen to install) in your MonoGame game as you would in any other .NET application. The **Get the Source** button above will link you to a variety of cross-platform MonoGame samples showing how to use the basic features of certain Azure SDKs.
54 |
55 | ## Try the Samples
56 |
57 | To use the sample, you will need to have an Azure account setup along with the service you wish to use.
58 |
59 | 1. Download the [MonoGame samples](https://github.com/BrianPeek/AzureSamples-MonoGame) from GitHub.
60 |
61 | 1. Unzip to a location on your hard drive.
62 |
63 | 1. Navigate to that location and open the solution for the service you're interested in using, for example the **AzureStorage.sln** solution file in the **Storage** directory.
64 |
65 | 1. Open **Game1.cs** from the **Shared** project in Solution Explorer.
66 |
67 | 1. Fill in any required connection strings or keys at the top of the file. You can find your connection strings and keys in the Azure Portal.
68 |
69 | 1. Build and run! Press 1, 2, 3, or 4 on your keyboard to test the associated API.
70 |
71 |
76 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/monogame/media/monogame-storage-nuget.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/monogame/media/monogame-storage-nuget.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/include/unity-import-2017.md:
--------------------------------------------------------------------------------
1 | 1. Open Unity and select **Edit > Project Settings > Player** to open the **PlayerSettings** panel.
2 |
3 | 1. Select **Experimental (.NET 4.6 Equivalent)** from the **Scripting Runtime Version** dropdown in the **Configuration** section.
4 |
5 | 
6 |
7 | 1. Add the .unitypackage you downloaded in the first step to Unity by using the **Assets > Import Package > Custom Package** menu option.
8 |
9 | 1. In the **Import Unity Package** box that pops up, you can select which things you'd like to import. By default everything will be selected. If you don't care to use the sample, you can uncheck that box.
10 |
11 | 1. Click the **Import** button to add the items to your project.
12 |
13 | With the package added, you can now use the normal API in your scripts as you would in any other application. Please take a look at the corresponding [sample](https://aka.ms/azsdks-unity) (also included in each .unitypackage) which demonstrates how to use each of the services to perform simple tasks.
14 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/include/unity-import.md:
--------------------------------------------------------------------------------
1 | 1. Open Unity and select **Edit > Project Settings > Player** to open the **PlayerSettings** panel.
2 |
3 | 1. Select **.NET 4.x Equivalent** from the **Scripting Runtime Version** dropdown and **.NET Standard 2.0** from the **Api Compatibility Level** dropdown in the **Configuration** section.
4 |
5 | 
6 |
7 | 1. Add the .unitypackage you downloaded in the first step to Unity by using the **Assets > Import Package > Custom Package** menu option.
8 |
9 | 1. In the **Import Unity Package** box that pops up, you can select which things you'd like to import. By default everything will be selected. If you don't care to use the sample, you can uncheck that box.
10 |
11 | 1. Click the **Import** button to add the items to your project.
12 |
13 | With the package added, you can now use the normal API in your scripts as you would in any other application. Please take a look at the corresponding [sample](https://aka.ms/azsdks-unity) (also included in each .unitypackage) which demonstrates how to use each of the services to perform simple tasks.
14 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/include/uwp-known-issues.md:
--------------------------------------------------------------------------------
1 | ### UWP Builds
2 |
3 | To build for UWP, ensure that the DLLs in the root Plugins directory are excluded from the build, while the DLLs in the WSA directory are included in the build. To do this:
4 |
5 | 1. In the **Project** window, select all DLLs that are in the root **Plugins\\<SDK>** directory (note that the DLLs and SDK directory name will vary based on the SDK).
6 |
7 | 
8 |
9 | 1. In the Inspector window at the right, make sure both **Any Platform** and **WSAPlayer** are not selected.
10 |
11 | 
12 |
13 | 1. In the **Project** window, select all DLLs that are in the root **Plugins\\<SDK>\\WSA** directory (note that the DLLs and SDK directory name will vary based on the SDK).
14 |
15 | 1. In the Inspector window at the right, make sure **Any Platform** is not selected and **WSAPlayer** is selected.
16 |
17 | 
18 |
19 | With these selections, you should be able to export your UWP build without issue. To go back to building for another platform, reverse the process -- make sure both **Any Platform** and **WSAPlayer** are selected and then export.
20 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/media/unity-player-config-2018.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/media/unity-player-config-2018.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/media/unity-player-config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/media/unity-player-config.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/media/unity-player-menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/media/unity-player-menu.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/media/unity-select-dlls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/media/unity-select-dlls.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/media/unity-wsaplayer-exclude.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/media/unity-wsaplayer-exclude.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/media/unity-wsaplayer-include.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/media/unity-wsaplayer-include.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/nuget2unity.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: NuGet2Unity
3 | description: NuGet packager for Unity
4 | author: BrianPeek
5 | manager: timheuer
6 | keywords: unity, azure, nuget
7 | ms.topic: article
8 | ms.date: 10/22/2018
9 | ms.author: brpeek
10 | ---
11 | # NuGet2Unity - Create Unity Packages from NuGet
12 |
13 | [!include[](../../includes/header.md)]
14 |
15 | Unity does not support importing or using NuGet packages directly. With this utility, you can download and package any NuGet package into a compatible .unitypackage for use with the Unity game engine. This utility has been used to create the [Azure SDK packages](https://aka.ms/NuGet2Unity) here on the Sandbox.
16 |
17 | [](https://aka.ms/NuGet2Unity)
18 |
19 | ## Requirements
20 |
21 | * [.NET Core 2.1 SDK](https://www.microsoft.com/net/download/dotnet-core/2.1)
22 |
23 | ## Compatibility
24 |
25 | This utility was written to support Unity 2018 and greater with its support for .NET Standard 2.0. Therefore, this packager will only work with NuGet packages that are compatible with .NET Standard 2.0. If you are using an older version of Unity and/or the .NET 4.x backend in Unity, this tool will not create a compatible package for you.
26 |
27 | > [!NOTE]
28 | > While the resulting .unitypackage may import into your Unity project just fine, there's no guarantee the binaries themselves will work properly with Unity's Mono or IL2CPP based engines.
29 |
30 | ## How to Use
31 |
32 | Please see the [README](https://aka.ms/NuGet2Unity) at the GitHub repo to learn more.
33 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_blobs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_blobs.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_connectionstring.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_connectionstring.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_downloading-assets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_downloading-assets.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_newproject.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_newproject.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_title-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_title-screen.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_unity-player-config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/azstbird_unity-player-config.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_add-domain.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_add-domain.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_add-path-vars.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_add-path-vars.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_add-project-file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_add-project-file.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_add-sample-scenes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_add-sample-scenes.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_android-debug-keystore-missing-cropped.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_android-debug-keystore-missing-cropped.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_android-debug-keystore-missing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_android-debug-keystore-missing.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_android-fb-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_android-fb-settings.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_app-url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_app-url.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_basic-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_basic-settings.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_bundleid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_bundleid.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_change-package-name.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_change-package-name.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_copy-functionapp-url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_copy-functionapp-url.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_cors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_cors.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_create-function-app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_create-function-app.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_create-function1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_create-function1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_defaulthostkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_defaulthostkey.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_download-openssl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_download-openssl.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_edit-path-var.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_edit-path-var.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-add-platform.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-add-platform.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-add-product.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-add-product.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-android-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-android-settings.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-auth-heading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-auth-heading.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-id-secret.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-id-secret.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fb-login.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fbios.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_fbios.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_import-fbsdk-unitypackage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_import-fbsdk-unitypackage.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_keytool-not-found.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_keytool-not-found.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_mobile-app-facebook-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_mobile-app-facebook-settings.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_new-fb-app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_new-fb-app.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_new-function-app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_new-function-app.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_new-function.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_new-function.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_open-environment-vars.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_open-environment-vars.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_open-fbsdk-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_open-fbsdk-settings.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_openssl-not-found-cropped.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_openssl-not-found-cropped.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_openssl-not-found.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_openssl-not-found.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_packages-added.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_packages-added.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_platformfeatures-cors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_platformfeatures-cors.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_search-environment-vars.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_search-environment-vars.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_select-easy-table.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_select-easy-table.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_set-easy-tables-permissions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_set-easy-tables-permissions.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_test-login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_test-login.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_website-platform-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_website-platform-settings.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_website.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/fbauth_website.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image10.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image3.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image4.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image5.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image6.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image7.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image8.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image9.1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image9.1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image9.2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image9.2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-configure-easy-tables-image9.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-implement-azure-mobileserviceclient-image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-implement-azure-mobileserviceclient-image1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-implement-azure-mobileserviceclient-image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-implement-azure-mobileserviceclient-image2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-implement-azure-mobileserviceclient-image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-implement-azure-mobileserviceclient-image3.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-import-sample-assets-image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-import-sample-assets-image1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-import-sample-assets-image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-import-sample-assets-image2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-leaderboard-explanation-image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-leaderboard-explanation-image1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image0.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image1.2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image1.2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image3.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image4.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image5.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image6.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image7.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image8.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-prepare-dev-environment-image9.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-racescene-explanation-image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-racescene-explanation-image1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-racescene-explanation-image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-racescene-explanation-image2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image10.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image11.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image12.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image13.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image14.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image15.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image3.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image4.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image5.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image6.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image7.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image8.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-setup-table-schema-image9.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-client-connection-image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-client-connection-image1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-sample-game-image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-sample-game-image1.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-sample-game-image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-sample-game-image2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-sample-game-image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-sample-game-image3.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-sample-game-image4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-sample-game-image4.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-sample-game-image5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_azure-test-sample-game-image5.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_configure_open_in_visual_studio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_configure_open_in_visual_studio.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_configure_unity_import_vstu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_configure_unity_import_vstu.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_connection_connected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_connection_connected.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_connection_to_unity.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_connection_to_unity.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_debugging_attach_unity_debugger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_debugging_attach_unity_debugger.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_debugging_build_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_debugging_build_settings.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_debugging_dll_add_existing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_debugging_dll_add_existing.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_debugging_dll_target_framework.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_debugging_dll_target_framework.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_monobehavior_wizard_full.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_monobehavior_wizard_full.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_monobehavior_wizard_quick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_monobehavior_wizard_quick.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_overview.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_unity_project_explorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_unity_project_explorer.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/gamedev/unity/samples/media/vstu_view_unity_project_explorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/gamedev/unity/samples/media/vstu_view_unity_project_explorer.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/includes/header.md:
--------------------------------------------------------------------------------
1 | > [!NOTE]
2 | > This is a [Sandbox](/previous-versions/sandbox) project. The content in this article is unsupported, and therefore may be out of date or not in a working state. That said, we still think it was awesome enough to include here. Enjoy!
3 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/index.yml:
--------------------------------------------------------------------------------
1 | ### YamlMime:Hub
2 |
3 | title: Sandbox documentation # < 60 chars
4 | summary: The Sandbox is designed to be a place where we can experiment, play with new technology, and get feedback on ideas. # < 160 chars
5 | # brand: aspnet | azure | dotnet | dynamics | m365 | ms-graph | office | power-bi | power-platform | sql | sql-server | vs | visual-studio | windows | xamarin
6 | brand: azure
7 |
8 | metadata:
9 | title: Sandbox documentation # Required; page title displayed in search results. Include the brand. < 60 chars.
10 | description: The Sandbox is designed to be a place where we can experiment, play with new technology, and get feedback on ideas. # Required; article description that is displayed in search results. < 160 chars.
11 | ms.service: multiple #Required; service per approved list. service slug assigned to your service by ACOM.
12 | ms.topic: hub-page # Required
13 | author: brianpeek #Required; your GitHub user alias, with correct capitalization.
14 | ms.author: brianpeek #Required; microsoft alias of author; optional team alias.
15 | ms.date: 05/03/2017 #Required; mm/dd/yyyy format.
16 |
17 |
18 | # highlightedContent section (optional)
19 | # Maximum of 8 items
20 | highlightedContent:
21 | # itemType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | sample | tutorial | video | whats-new
22 | items:
23 | # Card
24 | - title: OctoBot
25 | itemType: sample
26 | url: demos/octobot.md
27 | # Card
28 | - title: NotBacon
29 | itemType: sample
30 | url: demos/notbacon.md
31 | # Card
32 | - title: NotHotdog
33 | itemType: sample
34 | url: demos/notbacon.md
35 | # Card
36 | - title: GitHub Release Notes Generator
37 | itemType: overview
38 | url: demos/github-release-notes.md
39 |
40 | # conceptualContent section (optional)
41 | conceptualContent:
42 | # itemType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | sample | tutorial | video | whats-new
43 | title: sectiontitle # < 60 chars (optional)
44 | summary: sectionsummary # < 160 chars (optional)
45 | items:
46 | # Card
47 | - title: Game Development
48 | links:
49 | - url: gamedev/unity/azure-storage-unity.md
50 | itemType: sample
51 | text: Azure SDKs and Samples for Unity
52 | - url: gamedev/monogame/azure-monogame.md
53 | itemType: sample
54 | text: Azure SDKs and Samples for MonoGame
55 | - url: gamedev/unreal/azure-storage-unreal.md
56 | itemType: sample
57 | text: Azure SDKs and Samples for Unreal Engine
58 |
59 | # Card
60 | - title: Guidance
61 | links:
62 | - url: https://docs.microsoft.com/previous-versions/sandbox/functions-recipes/
63 | itemType: concept
64 | text: Azure Functions Recipes
65 |
--------------------------------------------------------------------------------
/previous-versions/sandbox/media/bit_sandbox1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/media/bit_sandbox1024.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/media/bit_sandbox768.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/media/bit_sandbox768.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/media/buttons/deploy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/media/buttons/deploy.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/media/buttons/deploy2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/media/buttons/deploy2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/media/buttons/source.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/media/buttons/source.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/media/buttons/source2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/media/buttons/source2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/media/buttons/try.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/media/buttons/try.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/media/buttons/try2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/media/buttons/try2.png
--------------------------------------------------------------------------------
/previous-versions/sandbox/media/template/Bit_No_Shadow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/sandbox/3de0e5f302b698dec8525f94ee5dfb9100e73971/previous-versions/sandbox/media/template/Bit_No_Shadow.png
--------------------------------------------------------------------------------