Learn how to use the ngrok Visual Studio extension to add ngrok support directly into your Visual Studio development workflow.
This guide explains how to add ngrok support to your Visual Studio workflow using a Visual Studio extension.
It covers installing the extension and connecting it to your ngrok account.
Install the ngrok extension for Visual Studio.
This extension is community-maintained rather than published by ngrok, so its setup and behavior follow the extension’s own documentation.
Open Visual Studio and configure the extension with your ngrok authtoken.
Follow the extension’s documentation for the exact configuration fields and workflow.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"ngrok documentation","colors":{"primary":"#273FC3","light":"#699AFC","dark":"#699AFC"},"logo":{"light":"https://mintcdn.com/ngrok/uPrboN8usISU3fq0/logo/light.svg?fit=max\u0026auto=format\u0026n=uPrboN8usISU3fq0\u0026q=85\u0026s=6a4a2c8995f8731e1bac3f795a68130d","dark":"https://mintcdn.com/ngrok/uPrboN8usISU3fq0/logo/dark.svg?fit=max\u0026auto=format\u0026n=uPrboN8usISU3fq0\u0026q=85\u0026s=e363c8b6e09a92e726a981e0156ba233","href":"https://ngrok.com/docs"},"favicon":"https://mintcdn.com/ngrok/BQQt-CHCs_8OwVmS/favicon.ico?fit=max\u0026auto=format\u0026n=BQQt-CHCs_8OwVmS\u0026q=85\u0026s=294907ab135b589ed607e4888e1a10a4","background":{"color":{"dark":"#121212"}},"navbar":{"links":[{"href":"https://ngrok.com/","label":"Homepage"},{"href":"https://dashboard.ngrok.com/","label":"Dashboard"}],"primary":{"type":"button","label":"Sign up","href":"https://dashboard.ngrok.com/signup"}},"footer":{"socials":{"x":"https://x.com/ngrokhq","github":"https://github.com/ngrok","linkedin":"https://linkedin.com/company/ngrok","youtube":"https://www.youtube.com/@ngrokHQ"},"links":[{"header":"Product","items":[{"label":"Gateway","href":"https://ngrok.com/docs/gateway/overview"},{"label":"AI Gateway","href":"https://ngrok.ai"},{"label":"Traffic Policy","href":"https://ngrok.com/docs/traffic-policy"},{"label":"Secure Tunnels","href":"https://ngrok.com/docs/agent/overview"},{"label":"Traffic Observability","href":"https://ngrok.com/docs/obs"},{"label":"Kubernetes Operator","href":"https://ngrok.com/docs/k8s"}]},{"header":"Problems we solve","items":[{"label":"API gateway","href":"https://ngrok.com/docs/guides/api-gateway/get-started"},{"label":"AI gateway","href":"https://ngrok.ai/"},{"label":"Webhook gateway","href":"https://ngrok.com/docs/gateway/examples/webhook-gateway"},{"label":"Ephemeral workloads","href":"https://ngrok.com/docs/gateway/examples/ephemeral-workloads"},{"label":"Customer connectivity","href":"https://ngrok.com/use-cases/saas-customer-connectivity"},{"label":"Device gateway","href":"https://ngrok.com/docs/guides/device-gateway/overview"},{"label":"Remote access","href":"https://ngrok.com/docs/guides/ssh-rdp"},{"label":"Share localhost","href":"https://ngrok.com/use-cases/share-localhost"},{"label":"Connect MCPs to AI providers","href":"https://ngrok.com/docs/gateway/api-gateway/mcp-gateway"},{"label":"Test webhooks","href":"https://ngrok.com/docs/share-localhost/webhooks"},{"label":"Access remote K8s clusters","href":"https://ngrok.com/docs/k8s/guides/local-projection"},{"label":"Minecraft","href":"https://ngrok.com/docs/gateway/examples/minecraft"}]},{"header":"Resources","items":[{"label":"Docs","href":"https://ngrok.com/docs/start"},{"label":"Guides","href":"https://ngrok.com/docs/guides"},{"label":"Pricing","href":"https://ngrok.com/pricing"},{"label":"Download","href":"https://ngrok.com/download"},{"label":"Security","href":"https://ngrok.com/security"},{"label":"Trust","href":"https://trust.ngrok.com/"},{"label":"Case studies","href":"https://ngrok.com/customers"},{"label":"Integrations","href":"https://ngrok.com/docs/integrations"},{"label":"Support","href":"https://ngrok.com/support"},{"label":"Abuse","href":"https://ngrok.com/abuse"},{"label":"Status","href":"https://status.ngrok.com/"}]},{"header":"Company","items":[{"label":"About","href":"https://ngrok.com/about"},{"label":"Contact","href":"https://ngrok.com/contact"},{"label":"Blog","href":"https://ngrok.com/blog"},{"label":"Newsletter","href":"https://ngrok.com/newsletter"},{"label":"Press","href":"https://ngrok.com/press"},{"label":"Brand","href":"https://ngrok.com/brand"},{"label":"Careers","href":"https://ngrok.com/careers"}]}]},"seo":{"metatags":{"canonical":"https://ngrok.com/docs"},"indexing":"navigable"},"fonts":{"heading":{"family":"Roobert","weight":600,"source":"https://assets.ngrok.com/fonts/roobert/roobert-proportional-vf.woff2","format":"woff2"},"body":{"family":"Roobert","weight":400,"source":"https://assets.ngrok.com/fonts/roobert/roobert-proportional-vf.woff2","format":"woff2"}},"integrations":{"posthog":{"apiKey":"phc_mUGMN4JlTzthGcz0XNK0z6NKUqdeQMn7rPRAM3mifjQ","apiHost":"https://e.ngrok.com"}},"contextual":{"options":["copy","view","mcp","add-mcp","claude","cursor","vscode","assistant","chatgpt","perplexity","grok","aistudio","devin","windsurf","devin-mcp","download-spec"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ngrok","hasAudioNarration":false,"actualSubdomain":"ngrok","customDomains":["ngrok.com"],"gitSource":{"type":"github","owner":"ngrok","repo":"ngrok-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae2544d911be5d0758ab395","collectionId":"491303b3-c16e-4efb-9f3d-8d6390410ff6","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae2544d911be5d0758ab395"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae2787cd102965dd135f294","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Reference","count":266},{"language":"default","tag":"Gateway","count":242},{"language":"default","tag":"Platform API","count":239},{"language":"default","tag":"Integrations","count":150},{"language":"default","tag":"AI Gateway","count":119},{"language":"default","tag":"Connectivity","count":91},{"language":"default","tag":"Webhooks","count":65},{"language":"default","tag":"Kubernetes Operators","count":58},{"language":"default","tag":"Traffic Policy","count":58},{"language":"default","tag":"Examples","count":46}],"searchSettings":{"isFiltersEnabled":false}},"assistantConfig":{"enableAskAiButton":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@ngrok.com","showHelpButton":true}},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"img{max-width:100%;height:auto}.tooltip{font-weight:700;text-decoration:none!important;position:relative}.tooltip::after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:1px;border-bottom:1px dotted rgba(0,0,0,.8)}.light .tooltip,:root .tooltip,[data-theme=light] .tooltip{color:rgba(0,0,0,.8)}.light .tooltip::after,:root .tooltip::after,[data-theme=light] .tooltip::after{border-bottom-color:rgba(0,0,0,.8)}.dark .tooltip,[data-theme=dark] .tooltip{color:rgba(255,255,255,.8)}.dark .tooltip::after,[data-theme=dark] .tooltip::after{border-bottom-color:rgba(255,255,255,.8)}@media (prefers-color-scheme:light){.tooltip{color:rgba(0,0,0,.8)}.tooltip::after{border-bottom-color:rgba(0,0,0,.8)}}@media (prefers-color-scheme:dark){.tooltip{color:rgba(255,255,255,.8)}.tooltip::after{border-bottom-color:rgba(255,255,255,.8)}}:root td .tooltip{font-weight:inherit;color:inherit}td button[data-state]{text-align:start}td button[data-state] code{white-space:nowrap;word-break:normal;overflow-wrap:normal}td:first-child:has(>button[data-state] code){width:100%}table:has(td:first-child>button[data-state] code) td,table:has(td:first-child>button[data-state] code) th{min-width:0;white-space:nowrap}td .icon{mask-size:contain;-webkit-mask-size:contain}td .tooltip:has(>.icon){text-decoration:none}td .tooltip:has(>.icon)::after{display:none}td code,td pre{word-wrap:break-word;overflow-wrap:break-word;word-break:break-word}td pre{white-space:pre-wrap;min-width:200px}td:has(code),td:has(pre){min-width:240px;width:auto}td code{min-width:150px}@font-face{font-family:\"Roobert\";src:url(https://assets.ngrok.com/fonts/roobert/roobert-proportional-vf.woff2) format(\"woff2 supports variations\"),url(https://assets.ngrok.com/fonts/roobert/roobert-proportional-vf.woff2) format(\"woff2-variations\");font-weight:300 900;font-display:swap;font-style:normal}@font-face{font-family:\"JetBrains Mono\";src:url(https://assets.ngrok.com/fonts/jetbrains/jetbrainsmono-wght.woff2) format(\"woff2 supports variations\"),url(https://assets.ngrok.com/fonts/jetbrains/jetbrainsmono-wght.woff2) format(\"woff2-variations\");font-weight:100 800;font-display:swap;font-style:normal}@font-face{font-family:\"JetBrains Mono\";src:url(https://assets.ngrok.com/fonts/jetbrains/jetbrainsmono-italic-wght.woff2) format(\"woff2 supports variations\"),url(https://assets.ngrok.com/fonts/jetbrains/jetbrainsmono-italic-wght.woff2) format(\"woff2-variations\");font-weight:100 800;font-display:swap;font-style:italic}.hljs,.token,code,pre,pre code{font-family:\"JetBrains Mono\",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}#topbar-cta-button span.bg-primary-dark{background-color:#121212!important;transition:background-color!important}#topbar-cta-button a:hover span.bg-primary-dark{background-color:#171717!important}#topbar-cta-button span.text-white,#topbar-cta-button svg{color:#fff!important}.dark #topbar-cta-button span.bg-primary-dark,[data-theme=dark] #topbar-cta-button span.bg-primary-dark{background-color:rgba(255,255,255,.85)!important;transition:background-color!important}.dark #topbar-cta-button a:hover span.bg-primary-dark,[data-theme=dark] #topbar-cta-button a:hover span.bg-primary-dark{background-color:#fff!important}.dark #topbar-cta-button span.text-white,.dark #topbar-cta-button svg,[data-theme=dark] #topbar-cta-button span.text-white,[data-theme=dark] #topbar-cta-button svg{color:#000!important}footer#footer a{overflow:visible;text-overflow:clip;white-space:nowrap}@media (min-width:768px) and (max-width:880px){footer#footer a{white-space:normal}}.nav-tabs-item>div.absolute.bottom-0{height:2px!important}.ngrok-consent{--ngrok-consent-surface:#ffffff;--ngrok-consent-border:#d4d4d4;--ngrok-consent-text:#121212;--ngrok-consent-action-bg-hover:rgb(115 115 115 / 10%);--ngrok-consent-focus-ring:rgb(39 63 195 / 35%);--ngrok-consent-shadow:0 1px 13px 0 rgb(0 0 0 / 5%),\n 0 4px 6px -4px rgb(0 0 0 / 10%),\n 0 10px 15px -3px rgb(0 0 0 / 10%);position:fixed;inset-inline:0;bottom:1rem;z-index:2147483000;display:flex;justify-content:center;padding-inline:1rem;pointer-events:none}:is(html.dark, html[data-theme=\"dark\"]) .ngrok-consent{--ngrok-consent-surface:#171717;--ngrok-consent-border:#404040;--ngrok-consent-text:#ffffff;--ngrok-consent-focus-ring:rgb(105 154 252 / 35%);--ngrok-consent-shadow:0 1px 13px 0 rgb(0 0 0 / 15%),\n 0 4px 6px -4px rgb(0 0 0 / 30%),\n 0 10px 15px -3px rgb(0 0 0 / 30%)}@media (min-width:640px){.ngrok-consent{bottom:2.5rem}}.ngrok-consent-panel{pointer-events:auto;display:flex;align-items:center;gap:.75rem;width:fit-content;max-width:100%;padding:.5rem .75rem;border:1px solid var(--ngrok-consent-border);border-radius:1rem;background-color:var(--ngrok-consent-surface);color:var(--ngrok-consent-text);box-shadow:var(--ngrok-consent-shadow);transition-property:opacity,translate;transition-timing-function:cubic-bezier(0,0,.2,1);transition-duration:400ms}.ngrok-consent-panel[hidden]{display:none}.ngrok-consent-panel[data-state=closed]{pointer-events:none;opacity:0;transition-duration:200ms}@media (prefers-reduced-motion:no-preference){.ngrok-consent-panel[data-state=closed]{translate:0 calc(100% + 2.5rem)}}.ngrok-consent-message{margin:0;font-size:.875rem;line-height:1.25rem}.ngrok-consent-actions{display:flex;align-items:center;gap:.375rem}.ngrok-consent-icon-button{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;border:1px solid transparent;border-radius:.375rem;background-color:transparent;color:var(--ngrok-consent-text);cursor:pointer;outline:2px solid transparent;outline-offset:2px;text-decoration:none;transition:transform 150ms cubic-bezier(0,0,.2,1)}.ngrok-consent-icon-button:hover{background-color:var(--ngrok-consent-action-bg-hover)}.ngrok-consent-icon-button:active{transform:scale(.97)}.ngrok-consent-icon-button:focus-visible{box-shadow:0 0 0 4px var(--ngrok-consent-focus-ring)}.ngrok-consent-icon-button svg{width:1.25rem;height:1.25rem;flex-shrink:0}"}],"page":{"pagePath":"using-ngrok-with/visualStudio","slug":"/using-ngrok-with/visualStudio","pageMetadata":{"title":"Using ngrok with Visual Studio / IIS Express","sidebarTitle":"Visual Studio / IIS Express","description":"Learn how to use the ngrok Visual Studio extension to add ngrok support directly into your Visual Studio development workflow.","href":"/using-ngrok-with/visualStudio"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how to use the ngrok Visual Studio extension to add ngrok support directly into your Visual Studio development workflow.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This guide explains how to add ngrok support to your Visual Studio workflow using a Visual Studio extension.\nIt covers installing the extension and connecting it to your ngrok account.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-you’ll-need`,children:`What you’ll need`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Visual Studio installed.`}),`\n`,_jsxs(_components.li,{children:[`An `,_jsx(_components.a,{href:`https://ngrok.com/signup`,children:`ngrok account`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Your `,_jsx(_components.a,{href:`https://dashboard.ngrok.com/get-started/your-authtoken`,children:`ngrok authtoken`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`1-install-the-visual-studio-extension`,children:`1. Install the Visual Studio extension`}),`\n`,_jsxs(_components.p,{children:[`Install the `,_jsx(_components.a,{href:`https://marketplace.visualstudio.com/items?itemName=DavidProthero.NgrokExtensions`,children:`ngrok extension for Visual Studio`}),`.\nThis extension is community-maintained rather than published by ngrok, so its setup and behavior follow the extension’s own documentation.`]}),`\n`,_jsx(Heading,{level:`2`,id:`2-configure-the-extension`,children:`2. Configure the extension`}),`\n`,_jsx(_components.p,{children:`Open Visual Studio and configure the extension with your ngrok authtoken.\nFollow the extension’s documentation for the exact configuration fields and workflow.`}),`\n`,_jsx(Heading,{level:`2`,id:`3-start-an-ngrok-tunnel-from-visual-studio`,children:`3. Start an ngrok tunnel from Visual Studio`}),`\n`,_jsx(_components.p,{children:`Start a tunnel using the extension.\nUse the generated URL to reach your local app through ngrok.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Using ngrok with Visual Studio / IIS Express","sidebarTitle":"Visual Studio / IIS Express","description":"Learn how to use the ngrok Visual Studio extension to add ngrok support directly into your Visual Studio development workflow.","href":"/using-ngrok-with/visualStudio"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What you’ll need","slug":"what-you’ll-need","depth":2,"children":[]},{"title":"1. Install the Visual Studio extension","slug":"1-install-the-visual-studio-extension","depth":2,"children":[]},{"title":"2. Configure the extension","slug":"2-configure-the-extension","depth":2,"children":[]},{"title":"3. Start an ngrok tunnel from Visual Studio","slug":"3-start-an-ngrok-tunnel-from-visual-studio","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/ngrok/05d9da4b27f4fed8/redirect-to-ngrok.js","/docs/_mintlify/custom/ngrok/cabe0d94bdb3d370/persist-query-params.js","/docs/_mintlify/custom/ngrok/09633916ed60fa29/definition-wrapper.js","/docs/_mintlify/custom/ngrok/6167f7a3c0c9913f/consent.js"],"subdomain":"ngrok","siteName":"ngrok documentation","title":"Using ngrok with Visual Studio / IIS Express - ngrok documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-21T17:28:52.986Z","originalFileLocation":"using-ngrok-with/visualStudio.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how to use the ngrok Visual Studio extension to add ngrok support directly into your Visual Studio development workflow.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ngrok documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Using ngrok with Visual Studio / IIS Express - ngrok documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to use the ngrok Visual Studio extension to add ngrok support directly into your Visual Studio development workflow.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ngrok documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://ngrok.com/docs/using-ngrok-with/visualStudio\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ngrok.mintlify.app/_mintlify/api/og/v2?division=General+Guides\u0026amp;title=Using+ngrok+with+Visual+Studio+%2F+IIS+Express\u0026amp;description=Learn+how+to+use+the+ngrok+Visual+Studio+extension+to+add+ngrok+support+directly+into+your+Visual+Studio+development+workflow.\u0026amp;theme=dd59335b8ec10833612cbd2f\u0026amp;signature=6916cc3ad576d32a258989a9bfb68dba6139fe99d7214b9e6885c5da52546fc5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Using ngrok with Visual Studio / IIS Express - ngrok documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to use the ngrok Visual Studio extension to add ngrok support directly into your Visual Studio development workflow.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ngrok.mintlify.app/_mintlify/api/og/v2?division=General+Guides\u0026amp;title=Using+ngrok+with+Visual+Studio+%2F+IIS+Express\u0026amp;description=Learn+how+to+use+the+ngrok+Visual+Studio+extension+to+add+ngrok+support+directly+into+your+Visual+Studio+development+workflow.\u0026amp;theme=dd59335b8ec10833612cbd2f\u0026amp;signature=6916cc3ad576d32a258989a9bfb68dba6139fe99d7214b9e6885c5da52546fc5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/ngrok/EDFj7szN2_Vn64sM/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ngrok documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#273FC3\">\u003clink data-mint-head rel=\"canonical\" href=\"https://ngrok.com/docs/using-ngrok-with/visualStudio\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/using-ngrok-with/visualStudio.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://ngrok.com/#organization\",\"name\":\"ngrok documentation\",\"url\":\"https://ngrok.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ngrok/uPrboN8usISU3fq0/logo/light.svg?fit=max\u0026auto=format\u0026n=uPrboN8usISU3fq0\u0026q=85\u0026s=6a4a2c8995f8731e1bac3f795a68130d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://ngrok.com/docs#website\",\"name\":\"ngrok documentation\",\"url\":\"https://ngrok.com/docs\",\"publisher\":{\"@id\":\"https://ngrok.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://ngrok.com/docs/using-ngrok-with/visualStudio#webpage\",\"url\":\"https://ngrok.com/docs/using-ngrok-with/visualStudio\",\"name\":\"Using ngrok with Visual Studio / IIS Express\",\"description\":\"Learn how to use the ngrok Visual Studio extension to add ngrok support directly into your Visual Studio development workflow.\",\"dateModified\":\"2026-09-21T17:28:52.986Z\",\"isPartOf\":{\"@id\":\"https://ngrok.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://ngrok.com/docs/using-ngrok-with/visualStudio#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://ngrok.com/docs/using-ngrok-with/visualStudio#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"General Guides\",\"item\":\"https://ngrok.com/docs/integrations/guides/home-assistant-with-ngrok\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using ngrok with Visual Studio / IIS Express\",\"item\":\"https://ngrok.com/docs/using-ngrok-with/visualStudio\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://ngrok.com/docs/using-ngrok-with/visualStudio#article\",\"headline\":\"Using ngrok with Visual Studio / IIS Express\",\"name\":\"Using ngrok with Visual Studio / IIS Express\",\"description\":\"Learn how to use the ngrok Visual Studio extension to add ngrok support directly into your Visual Studio development workflow.\",\"url\":\"https://ngrok.com/docs/using-ngrok-with/visualStudio\",\"mainEntityOfPage\":{\"@id\":\"https://ngrok.com/docs/using-ngrok-with/visualStudio#webpage\"},\"dateModified\":\"2026-09-21T17:28:52.986Z\",\"publisher\":{\"@id\":\"https://ngrok.com/#organization\"},\"isPartOf\":{\"@id\":\"https://ngrok.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ngrok documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"ngrok documentation","nav":{"global":null,"tabs":[{"tab":"Start","pages":[{"title":"Start","href":"/start"}]},{"tab":"Gateway","pages":[{"title":"Gateway","href":"/gateway/overview"}]},{"tab":"AI Gateway","pages":[{"title":"AI Gateway","href":"/ai-gateway/overview"}]},{"tab":"Share Localhost","pages":[{"title":"Share Localhost","href":"/share-localhost/overview"}]},{"tab":"For AI Agents","pages":[{"title":"For AI Agents","href":"/for-agents"}]},{"tab":"Integrations","pages":[{"title":"Integrations Hub","mode":"wide","href":"/integrations"},{"group":"General Guides","pages":[{"title":"How to access Home Assistant from anywhere with ngrok","sidebarTitle":"Home Assistant","href":"/integrations/guides/home-assistant-with-ngrok"},{"title":"MQTT","href":"/integrations/guides/mqtt"},{"title":"Expose Local Services Behind CGNAT Without Port Forwarding","sidebarTitle":"CGNAT","href":"/using-ngrok-with/cgnat"},{"group":"Docker","pages":[{"title":"Using ngrok with Docker","sidebarTitle":"Overview","href":"/using-ngrok-with/docker/index"},{"title":"Using ngrok with Docker Compose","sidebarTitle":"Docker Compose","href":"/using-ngrok-with/docker/compose"},{"title":"Using ngrok Docker Desktop","sidebarTitle":"Docker Desktop","href":"/using-ngrok-with/docker/desktop"}]},{"title":"Configuring GoDaddy DNS for ngrok Reserved Domains","sidebarTitle":"GoDaddy","href":"/using-ngrok-with/godaddy"},{"title":"Using ngrok with Google Colab","sidebarTitle":"Google Colab","href":"/using-ngrok-with/googleColab"},{"title":"Using ngrok with Java","sidebarTitle":"Java","href":"/using-ngrok-with/java"},{"title":"Using ngrok with Minecraft","sidebarTitle":"Minecraft","href":"/using-ngrok-with/minecraft"},{"title":"Using ngrok with OpenVPN Connect","sidebarTitle":"OpenVPN Connect","href":"/using-ngrok-with/openvpn"},{"title":"Using ngrok with Puppet","sidebarTitle":"Puppet","description":"Learn how to use the ngrok Puppet module to install and configure ngrok resources and ensure the agent process is running.","href":"/using-ngrok-with/puppet"},{"title":"Using ngrok with Visual Studio / IIS Express","sidebarTitle":"Visual Studio / IIS Express","href":"/using-ngrok-with/visualStudio"},{"title":"Using ngrok with VSCode","sidebarTitle":"VSCode","description":"Learn how to use the ngrok VSCode extension to add ngrok support directly into your VSCode development environment.","href":"/using-ngrok-with/vsCode"}]},{"group":"CLI Credentials","pages":[{"title":"How to secure your ngrok CLI credentials with 1Password","sidebarTitle":"1Password","href":"/integrations/cli-credentials/1password"}]},{"group":"Dashboard SSO","pages":[{"title":"Configure Auth0 Single Sign-On with SAML","sidebarTitle":"Auth0 (SAML)","href":"/integrations/dashboard-sso/auth0-dashboard-sso-saml"},{"title":"Microsoft Entra ID SSO (SAML)","sidebarTitle":"Microsoft Entra ID (SAML)","href":"/integrations/dashboard-sso/microsoft-sso-saml"},{"title":"Configure Okta Single Sign-On (SSO) Using OpenID Connect (OIDC)","sidebarTitle":"Okta (OpenID Connect)","href":"/integrations/dashboard-sso/okta-dashboard-sso-oidc"},{"title":"Configure Okta Single Sign-On (SSO)","sidebarTitle":"Okta (SAML)","href":"/integrations/dashboard-sso/okta-dashboard-sso-saml"},{"title":"Automate user provisioning via SCIM with Okta","sidebarTitle":"Okta (SCIM)","href":"/integrations/dashboard-sso/okta-dashboard-sso-scim"},{"title":"Salesforce Dashboard Single Sign-On (SSO) Using OIDC","sidebarTitle":"Salesforce (OpenID Connect)","href":"/integrations/dashboard-sso/salesforce-dashboard-sso-oidc"}]},{"group":"Databases","pages":[{"title":"Using ngrok with MySQL","sidebarTitle":"MySQL","href":"/using-ngrok-with/mysql"},{"title":"Using ngrok with MongoDB","sidebarTitle":"MongoDB","href":"/using-ngrok-with/mongodb"},{"title":"Using ngrok with PostgreSQL","sidebarTitle":"PostgreSQL","href":"/using-ngrok-with/postgresql"},{"title":"Using ngrok with Redis","sidebarTitle":"Redis","href":"/using-ngrok-with/redis"}]},{"group":"Endpoints SSO","pages":[{"title":"Auth0 Endpoint SSO (OpenID Connect)","sidebarTitle":"Auth0 (OpenID Connect)","href":"/integrations/endpoint-sso/auth0-sso-oidc"},{"title":"Azure Active Directory B2C SSO (SAML)","sidebarTitle":"Azure AD B2C (SAML)","href":"/integrations/endpoint-sso/azure-sso-saml"},{"title":"Secure Your Endpoints with Curity Identity Server SSO (OpenID Connect)","sidebarTitle":"Curity (OpenID Connect)","href":"/integrations/endpoint-sso/curity-sso-oidc"},{"title":"Secure Your Endpoints with Descope SSO (OpenID Connect)","sidebarTitle":"Descope (OpenID Connect)","href":"/integrations/endpoint-sso/descope-sso-oidc"},{"title":"Secure Your Endpoints with Descope SSO (SAML)","sidebarTitle":"Descope (SAML)","href":"/integrations/endpoint-sso/descope-sso-saml"},{"title":"Secure Your Endpoints with Frontegg SSO (OpenID Connect)","sidebarTitle":"Frontegg (OpenID Connect)","href":"/integrations/endpoint-sso/frontegg-sso-oidc"},{"title":"Secure Your Endpoints with Frontegg SSO (SAML)","sidebarTitle":"Frontegg (SAML)","href":"/integrations/endpoint-sso/frontegg-sso-saml"},{"title":"FusionAuth Endpoint SSO (OpenID Connect)","sidebarTitle":"FusionAuth (OpenID Connect)","href":"/integrations/endpoint-sso/fusionauth-sso-oidc"},{"title":"JumpCloud Endpoint SSO (OpenID Connect)","sidebarTitle":"JumpCloud (OpenID Connect)","href":"/integrations/endpoint-sso/jumpcloud-sso-oidc"},{"title":"JumpCloud SSO (SAML)","sidebarTitle":"JumpCloud (SAML)","href":"/integrations/endpoint-sso/jumpcloud-sso-saml"},{"title":"miniOrange Endpoint SSO (OpenID Connect)","sidebarTitle":"miniOrange (OpenID Connect)","href":"/integrations/endpoint-sso/miniorange-sso-oidc"},{"title":"miniOrange SSO (SAML)","sidebarTitle":"miniOrange (SAML)","href":"/integrations/endpoint-sso/miniorange-sso-saml"},{"title":"Secure Your Endpoints with Okta SSO (OpenID Connect)","sidebarTitle":"Okta (OpenID Connect)","href":"/integrations/endpoint-sso/okta-sso-oidc"},{"title":"Secure Your Endpoints with Okta SSO (SAML)","sidebarTitle":"Okta (SAML)","href":"/integrations/endpoint-sso/okta-sso-saml"},{"title":"Secure ngrok Endpoints Using Salesforce OpenID Connect","sidebarTitle":"Salesforce (OpenID Connect)","href":"/integrations/endpoint-sso/salesforce-sso-oidc"},{"title":"Wallix Trustelem Endpoint SSO (OpenID Connect)","sidebarTitle":"Wallix Trustelem (OpenID Connect)","href":"/integrations/endpoint-sso/trustelem-sso-oidc"},{"title":"Wallix Trustelem SSO (SAML)","sidebarTitle":"Wallix Trustelem (SAML)","href":"/integrations/endpoint-sso/trustelem-sso-saml"}]},{"group":"Event Destinations","pages":[{"title":"Send Network Logs from ngrok to AWS CloudWatch","sidebarTitle":"AWS CloudWatch","href":"/integrations/event-destinations/amazon-cloudwatch-event-destination"},{"title":"Send Network Logs from ngrok to AWS Firehose","sidebarTitle":"AWS Firehose","href":"/integrations/event-destinations/amazon-firehose-event-destination"},{"title":"Send Network Logs from ngrok to AWS Kinesis","sidebarTitle":"AWS Kinesis","href":"/integrations/event-destinations/amazon-kinesis-event-destination"},{"title":"Integrate with the Azure Logs Ingestion API","sidebarTitle":"Azure Logs Ingestion","href":"/integrations/event-destinations/azure-logs-event-destination"},{"title":"Send Network Logs from ngrok to Datadog","sidebarTitle":"Datadog","href":"/integrations/event-destinations/datadog-event-destination"}]},{"group":"Frameworks","pages":[{"title":"Using ngrok with FastAPI","sidebarTitle":"FastAPI","href":"/using-ngrok-with/fastAPI"},{"title":"Using ngrok with Flask","sidebarTitle":"Flask","href":"/using-ngrok-with/flask"},{"title":"Using ngrok with Laravel","sidebarTitle":"Laravel","href":"/using-ngrok-with/laravel"}]},{"group":"JWT Validation","pages":[{"title":"Enable JWT validation with Auth0","sidebarTitle":"Auth0","href":"/integrations/jwt-validation/auth0"}]},{"group":"Kubernetes Ingress","pages":[{"title":"Kubernetes Ingress Integrations","sidebarTitle":"Overview","href":"/integrations/kubernetes-ingress/index"},{"title":"Deploy a production API and gateway with APIOps using Argo CD and ngrok","sidebarTitle":"APIOps with Argo CD","href":"/integrations/kubernetes-ingress/apiops"},{"title":"Ingress to apps secured by Microsoft Entra ID in Kubernetes","sidebarTitle":"Microsoft Entra ID","href":"/integrations/kubernetes-ingress/azure-ad-k8s"},{"title":"Ingress to Kubernetes apps deployed on Azure Kubernetes Service (AKS)","sidebarTitle":"Azure Kubernetes Service","href":"/integrations/kubernetes-ingress/azure-aks-k8s"},{"title":"Kubernetes ingress to services in a Consul service mesh","sidebarTitle":"Consul Service Mesh","href":"/integrations/kubernetes-ingress/consul-k8s"},{"title":"Ingress to Kubernetes apps on clusters managed by DigitalOcean","sidebarTitle":"DigitalOcean","href":"/integrations/kubernetes-ingress/digitalocean-k8s"},{"title":"Kubernetes ingress to services hosted on EKS","sidebarTitle":"EKS","href":"/integrations/kubernetes-ingress/eks"},{"title":"ngrok External Secrets integration","sidebarTitle":"External Secrets","href":"/integrations/kubernetes-ingress/external-secrets"},{"title":"Kubernetes ingress to GKE services with ngrok","sidebarTitle":"GKE","href":"/integrations/kubernetes-ingress/google-kubernetes-engine"},{"title":"Use ngrok's Global Server Load Balancing with DigitalOcean","sidebarTitle":"Global Server Load Balancing","href":"/integrations/kubernetes-ingress/gslb"},{"title":"Ingress to a microservices-based application connected via Linkerd's service mesh","sidebarTitle":"Linkerd","href":"/integrations/kubernetes-ingress/k8s"},{"title":"Kubernetes ingress to apps/APIs on clusters managed by Canonical MicroK8s","sidebarTitle":"MicroK8s","href":"/integrations/kubernetes-ingress/microk8s-k8s"},{"title":"Ingress to Kubernetes apps managed by Rafay","sidebarTitle":"Rafay","href":"/integrations/kubernetes-ingress/rafay-k8s"},{"title":"Kubernetes ingress to applications and clusters managed by Rancher","sidebarTitle":"Rancher","href":"/integrations/kubernetes-ingress/rancher-k8s"},{"title":"Ingress to Kubernetes apps deployed on Spectro Cloud Palette","sidebarTitle":"Spectro Cloud Palette","href":"/integrations/kubernetes-ingress/spectro-cloud-k8s"},{"title":"Ingress to Kubernetes apps and services with vcluster","sidebarTitle":"vcluster","href":"/integrations/kubernetes-ingress/vcluster-k8s"}]},{"group":"OAuth","pages":[{"title":"Facebook OAuth","sidebarTitle":"Facebook","href":"/integrations/oauth/facebook-oauth"},{"title":"GitHub OAuth","sidebarTitle":"GitHub","href":"/integrations/oauth/github-oauth"},{"title":"GitLab OAuth","sidebarTitle":"GitLab","href":"/integrations/oauth/gitlab-oauth"},{"title":"Google OAuth","sidebarTitle":"Google","href":"/integrations/oauth/google-oauth"},{"title":"LinkedIn OAuth","sidebarTitle":"LinkedIn","href":"/integrations/oauth/linkedin-oauth"},{"title":"Microsoft OAuth","sidebarTitle":"Microsoft","href":"/integrations/oauth/microsoft-oauth"},{"title":"Amazon OAuth","sidebarTitle":"Amazon","href":"/integrations/oauth/oauth"},{"title":"Twitch OAuth","sidebarTitle":"Twitch","href":"/integrations/oauth/twitch-oauth"}]},{"group":"Protocols","pages":[{"title":"Using ngrok with SSH","sidebarTitle":"SSH","href":"/using-ngrok-with/ssh"},{"title":"Using ngrok with FTP, FTPS, SFTP","sidebarTitle":"FTP, FTPS, SFTP","href":"/using-ngrok-with/ftp"},{"title":"Using ngrok with Websockets","sidebarTitle":"Websockets","href":"/using-ngrok-with/websockets"},{"title":"Using ngrok with Real-Time Messaging Protocol (RTMP)","sidebarTitle":"Real-Time Messaging Protocol (RTMP)","href":"/using-ngrok-with/rtmp"}]},{"group":"Webhooks","pages":[{"title":"AfterShip Webhooks","sidebarTitle":"AfterShip","href":"/integrations/webhooks/aftership-webhooks"},{"title":"Airship Webhooks","sidebarTitle":"Airship","href":"/integrations/webhooks/airship-webhooks"},{"title":"Alchemy Webhooks","sidebarTitle":"Alchemy","href":"/integrations/webhooks/alchemy-webhooks"},{"title":"Amazon SNS Webhooks","sidebarTitle":"Amazon SNS","href":"/integrations/webhooks/amazon-sns-webhooks"},{"title":"Autodesk Platform Services Webhooks","sidebarTitle":"Autodesk Platform Services","href":"/integrations/webhooks/autodesk-webhooks"},{"title":"Bitbucket Repository Webhooks","sidebarTitle":"Bitbucket Repository","href":"/integrations/webhooks/bitbucket-webhooks"},{"title":"Box Webhooks","sidebarTitle":"Box","href":"/integrations/webhooks/box-webhooks"},{"title":"Brex Webhooks","sidebarTitle":"Brex","href":"/integrations/webhooks/brex-webhooks"},{"title":"Buildkite Webhooks","sidebarTitle":"Buildkite","href":"/integrations/webhooks/buildkite-webhooks"},{"title":"Calendly Webhooks","sidebarTitle":"Calendly","href":"/integrations/webhooks/calendly-webhooks"},{"title":"Castle Webhooks","sidebarTitle":"Castle","href":"/integrations/webhooks/castle-webhooks"},{"title":"Chargify Webhooks","sidebarTitle":"Chargify","href":"/integrations/webhooks/chargify-webhooks"},{"title":"CircleCI Webhooks","sidebarTitle":"CircleCI","href":"/integrations/webhooks/circleci-webhooks"},{"title":"Clerk Webhooks","sidebarTitle":"Clerk","href":"/integrations/webhooks/clerk-webhooks"},{"title":"Coinbase Webhooks","sidebarTitle":"Coinbase","href":"/integrations/webhooks/coinbase-webhooks"},{"title":"Contentful Webhooks","sidebarTitle":"Contentful","href":"/integrations/webhooks/contentful-webhooks"},{"title":"DocuSign Webhooks","sidebarTitle":"DocuSign","href":"/integrations/webhooks/docusign-webhooks"},{"title":"Dropbox Webhooks","sidebarTitle":"Dropbox","href":"/integrations/webhooks/dropbox-webhooks"},{"title":"Facebook Messenger Webhooks","sidebarTitle":"Facebook Messenger","href":"/integrations/webhooks/facebook-messenger-webhooks"},{"title":"Facebook Webhooks","sidebarTitle":"Facebook","href":"/integrations/webhooks/facebook-webhooks"},{"title":"Frame.io Webhooks","sidebarTitle":"Frame.io","href":"/integrations/webhooks/frameio-webhooks"},{"title":"GitHub Repository Webhooks","sidebarTitle":"GitHub Repository","href":"/integrations/webhooks/github-webhooks"},{"title":"GitLab Repository Webhooks","sidebarTitle":"GitLab Repository","href":"/integrations/webhooks/gitlab-webhooks"},{"title":"Heroku Webhooks","sidebarTitle":"Heroku","href":"/integrations/webhooks/heroku-webhooks"},{"title":"HostedHooks Webhooks","sidebarTitle":"HostedHooks","href":"/integrations/webhooks/hostedhooks-webhooks"},{"title":"HubSpot Webhooks","sidebarTitle":"HubSpot","href":"/integrations/webhooks/hubspot-webhooks"},{"title":"Hygraph Webhooks","sidebarTitle":"Hygraph","href":"/integrations/webhooks/hygraph-webhooks"},{"title":"Instagram Webhooks","sidebarTitle":"Instagram","href":"/integrations/webhooks/instagram-webhooks"},{"title":"Intercom Webhooks","sidebarTitle":"Intercom","href":"/integrations/webhooks/intercom-webhooks"},{"title":"Jira Webhooks","sidebarTitle":"Jira","href":"/integrations/webhooks/jira-webhooks"},{"title":"LaunchDarkly Webhooks","sidebarTitle":"LaunchDarkly","href":"/integrations/webhooks/launchdarkly-webhooks"},{"title":"Linear Webhooks","sidebarTitle":"Linear","href":"/integrations/webhooks/linear-webhooks"},{"title":"Mailchimp Webhooks","sidebarTitle":"Mailchimp","href":"/integrations/webhooks/mailchimp-webhooks"},{"title":"Mailgun Webhooks","sidebarTitle":"Mailgun","href":"/integrations/webhooks/mailgun-webhooks"},{"title":"Modern Treasury Webhooks","sidebarTitle":"Modern Treasury","href":"/integrations/webhooks/modern-treasury-webhooks"},{"title":"MongoDB Webhooks","sidebarTitle":"MongoDB","href":"/integrations/webhooks/mongodb-webhooks"},{"title":"Mux Webhooks","sidebarTitle":"Mux","href":"/integrations/webhooks/mux-webhooks"},{"title":"Okta Webhooks","sidebarTitle":"Okta","href":"/integrations/webhooks/okta-webhooks"},{"title":"PagerDuty Webhooks","sidebarTitle":"PagerDuty","href":"/integrations/webhooks/pagerduty-webhooks"},{"title":"Pinwheel Webhooks","sidebarTitle":"Pinwheel","href":"/integrations/webhooks/pinwheel-webhooks"},{"title":"Plivo Webhooks","sidebarTitle":"Plivo","href":"/integrations/webhooks/plivo-webhooks"},{"title":"Pusher Webhooks","sidebarTitle":"Pusher","href":"/integrations/webhooks/pusher-webhooks"},{"title":"SendGrid Webhooks","sidebarTitle":"SendGrid","href":"/integrations/webhooks/sendgrid-webhooks"},{"title":"Sentry Webhooks","sidebarTitle":"Sentry","href":"/integrations/webhooks/sentry-webhooks"},{"title":"Shopify Webhooks","sidebarTitle":"Shopify","href":"/integrations/webhooks/shopify-webhooks"},{"title":"Signal Sciences Webhooks","sidebarTitle":"Signal Sciences","href":"/integrations/webhooks/signalsciences-webhooks"},{"title":"Slack Webhooks","sidebarTitle":"Slack","href":"/integrations/webhooks/slack-webhooks"},{"title":"Sonatype Nexus Webhooks","sidebarTitle":"Sonatype Nexus","href":"/integrations/webhooks/sonatype-nexus-webhooks"},{"title":"Square Webhooks","sidebarTitle":"Square","href":"/integrations/webhooks/square-webhooks"},{"title":"Stripe Webhooks","sidebarTitle":"Stripe","href":"/integrations/webhooks/stripe-webhooks"},{"title":"Svix Webhooks","sidebarTitle":"Svix","href":"/integrations/webhooks/svix-webhooks"},{"title":"Microsoft Teams Webhooks","sidebarTitle":"Microsoft Teams","href":"/integrations/webhooks/teams-webhooks"},{"title":"Terraform Cloud Webhooks","sidebarTitle":"Terraform Cloud","href":"/integrations/webhooks/terraform-webhooks"},{"title":"TikTok Webhooks","sidebarTitle":"TikTok","href":"/integrations/webhooks/tiktok-webhooks"},{"title":"Trend Micro Webhooks","sidebarTitle":"Trend Micro","href":"/integrations/webhooks/trendmicro-webhooks"},{"title":"Twilio SMS Webhooks","sidebarTitle":"Twilio SMS","href":"/integrations/webhooks/twilio-webhooks"},{"title":"X (formerly Twitter) Webhooks","sidebarTitle":"X (Twitter)","href":"/integrations/webhooks/twitter-webhooks"},{"title":"Typeform Webhooks","sidebarTitle":"Typeform","href":"/integrations/webhooks/typeform-webhooks"},{"title":"VMware Workspace ONE Webhooks","sidebarTitle":"VMware Workspace ONE","href":"/integrations/webhooks/vmware-webhooks"},{"title":"Cisco Webex Webhooks","sidebarTitle":"Cisco Webex","href":"/integrations/webhooks/webex-webhooks"},{"title":"WhatsApp Webhooks","sidebarTitle":"WhatsApp","href":"/integrations/webhooks/whatsapp-webhooks"},{"title":"Worldline Webhooks","sidebarTitle":"Worldline","href":"/integrations/webhooks/worldline-webhooks"},{"title":"Xero Webhooks","sidebarTitle":"Xero","href":"/integrations/webhooks/xero-webhooks"},{"title":"Zendesk Webhooks","sidebarTitle":"Zendesk","href":"/integrations/webhooks/zendesk-webhooks"},{"title":"Zoom Webhooks","sidebarTitle":"Zoom","href":"/integrations/webhooks/zoom-webhooks"}]},{"group":"Web Servers","pages":[{"title":"Using ngrok with SMTP Mail Servers","sidebarTitle":"SMTP Mail Servers","href":"/using-ngrok-with/smtp"},{"title":"Using ngrok with NGINX","sidebarTitle":"NGINX","href":"/using-ngrok-with/nginx"},{"title":"Using ngrok with an outbound proxy","sidebarTitle":"Outbound Proxies","href":"/using-ngrok-with/outboundProxy"},{"title":"Using ngrok with Virtual hosts (MAMP, WAMP, etc)","sidebarTitle":"Virtual hosts (MAMP, WAMP, etc)","href":"/using-ngrok-with/virtualHosts"},{"title":"Using ngrok with gRPC","sidebarTitle":"gRPC","href":"/using-ngrok-with/gRPC"}]}]},{"tab":"Reference","menu":[{"item":"Platform API","pages":[{"title":"Platform API","href":"/api"}]},{"item":"Agent API","pages":[{"title":"Agent API","href":"/gateway/agent/api"}]},{"item":"Agent CLI","pages":[{"title":"Agent CLI","href":"/gateway/agent/cli"}]},{"item":"Agent Config File","pages":[{"title":"Agent Config File","href":"/gateway/agent/config"}]},{"item":"Agent SDKs","pages":[{"title":"Agent SDKs","href":"/agent-sdks"}]},{"item":"Errors","pages":[{"title":"Errors","href":"/errors"}]},{"item":"Changelogs","pages":[{"title":"Changelogs","href":"/gateway/agent/changelog"}]}],"pages":[{"title":"Reference","href":"/api"}]},{"tab":"Pricing","pages":[{"title":"Pricing","href":"/pricing-limits"}]},{"tab":"About","pages":[{"title":"About","href":"/about"}]}]},"title":"Using ngrok with Visual Studio / IIS Express - ngrok documentation","buildId":"dpl_AUojGTPodKNPTVaxVPcxnNvkSVqo","deploymentId":"dpl_AUojGTPodKNPTVaxVPcxnNvkSVqo","dynamics":[],"chunks":[]}