├── .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 | ![Azure Functions expanded tab in the portal](../media/integrate-tab.png) 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 | ![Azure Functions HTTP methods inside the portal](../media/integrate-http-methods.png) 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 | ![Azure Functions Overview tab in the portal](../media/function-overview.png) 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 | ![Azure Functions Application Settings in the portal](../media/function-app-settings.png) 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 | ![Azure Functions Manage tab](../media/manage-tab.png) 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 | ![Azure Functions Manage page](../media/manage-page.png) 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 | ![Creating a function app](../media/create-function-app-portal.png) 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 | ![Creating a function](../media/create-function-portal.png) 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 | ![A function in the portal](../media/function-portal.png) 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 | ![](../media/integratetab.png) 6 | 7 | Enter the route that you want your function to have in the Route template box on the page. 8 | 9 | ![](../media/integratepage.png) 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 | ![Azure Functions tools for Visual Studio Extension](../media/azure-funtion-vs-ext.png) 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 | ![Azure Function tools for Visual Studio Code Extension](../media/azure-funtion-vscode-ext.png) 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 | [![Get the source](../../media/buttons/source2.png)](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 | ![nuget](media/monogame-storage-nuget.png) 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 | ![Scripting Configuration dialog](../media/unity-player-config.png) 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 | ![Scripting Configuration dialog](../media/unity-player-config-2018.png) 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 | ![Select all DLLs](../media/unity-select-dlls.png) 8 | 9 | 1. In the Inspector window at the right, make sure both **Any Platform** and **WSAPlayer** are not selected. 10 | 11 | ![Exclude only WSAPlayer](../media/unity-wsaplayer-exclude.png) 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 | ![Include only WSAPlayer](../media/unity-wsaplayer-include.png) 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 | [![Get the source](../../media/buttons/source2.png)](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 --------------------------------------------------------------------------------