 <p>Yes, Browser-Sync has <a href="http://www.browsersync.io/docs/api/#api-init" rel="nofollow">snippet-mode</a> for the case in which a proxy won't work. The general usage is to just cut and paste a snippet into the body of your pages and you'll get the injecting/reloading support. However this is a lot of perpetual manual work.</p> <p>I came up with a convention to eliminate the manual work.</p> <p><strong>First</strong> add to your <code>Web.config</code>:</p> <pre><code> &lt;configuration&gt; &lt;appSettings&gt; &lt;add key="IncludeBrowserSync" value="true" /&gt; &lt;!--...--&gt; &lt;/appSettings&gt; &lt;!--...--&gt; &lt;/configuration&gt; </code></pre> <p><strong>Then</strong> add to your Web.Release.config:</p> <pre><code>&lt;appSettings&gt; &lt;add key="IncludeBrowserSync" value="false" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" /&gt; &lt;/appSettings&gt; </code></pre> <p><em>This allows us to not worry about accidentally deploying the snippet.</em></p> <p><strong>Create</strong> in the <code>Shared</code> Views folder a <code>BrowserSync.cshtml</code>:</p> <pre><code>@using System.Configuration @if (ConfigurationManager.AppSettings["IncludeBrowserSync"]?.ToLower().Contains("t") ?? false) { &lt;!-- BrowserSync:SNIPPET--&gt; &lt;script type='text/javascript' id="__bs_script__"&gt; //&lt;![CDATA[ document.write("&lt;script async src='http://HOST:PORT/browser-sync/browser-sync-client.js'&gt;&lt;\/script&gt;".replace("HOST", location.hostname).replace("PORT", parseInt(location.port) + 1)); //]]&gt; &lt;/script&gt; &lt;!-- BS:BrowserSyncs:END--&gt; } </code></pre> <p><em>As you can see for the snippet, its going to be a little different from what browser sync tells you to cut and paste. The main difference is that it's not going to include the version number (so <code>npm</code> can update browser-sync without breaking your snippet) and it's using a convention for the port number to be one above what IISExpress is serving.</em></p> <p><strong>Now</strong> add <code>@Html.Partial("BrowserSync")</code> right above the <code>&lt;/body</code> in any <code>_layout.html</code> you have.</p> <p><strong>Finally</strong> to make this all work in your <code>gulpfile.js</code> with a <code>serve</code> task for browse-sync.</p> <pre><code>var gulp = require('gulp'); var browserSync = require('browser-sync').create(); ... var dllName = "&lt;YourProjectName&gt;.dll"; var iisPort = &lt;YourPortNumber&gt;; gulp.task('serve', ['default'], function () { browserSync.init({ port: iisPort + 1; }); gulp.watch("&lt;your wildchar to find your editable css files&gt;", ['compile-minimize-css']); /*...*/ gulp.watch("Views/**/*.cshtml").on('change', browserSync.reload); gulp.watch("bin/"+dllName).on('change', browserSync.reload); }); </code></pre> <p><em>Enjoy automatic refreshes after you start <code>serve</code> in the task runner!</em></p>