如何在VS项目中使用ntlm进行浏览器同步

jbt*_*ule 3 authentication visual-studio browser-sync

我有一个asp.net mvc项目,我想在我的gulp文件中使用浏览器同步来自动注入css更改并在我对网站进行更改时重新加载页面.我之前已经在proxy模式下完成了这个,但是这个站点使用了无法代理的Windows身份验证(NTLM).有没有办法使浏览器同步工作?

jbt*_*ule 6

是的,浏览器同步具有代理无效的情况下的代码段模式.一般用法是将片段剪切并粘贴到页面主体中,您将获得注入/重新加载支持.然而,这是许多永久的手工工作.

我想出了一个消除手工工作的惯例.

首先添加到您的Web.config:

  <configuration>
      <appSettings>
          <add key="IncludeBrowserSync" value="true" />
          <!--...-->
      </appSettings>
      <!--...-->
  </configuration>
Run Code Online (Sandbox Code Playgroud)

然后添加到您的Web.Release.config:

<appSettings>
   <add key="IncludeBrowserSync" value="false" xdt:Transform="SetAttributes"
      xdt:Locator="Match(key)" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

这使我们不必担心意外部署代码段.

SharedViews文件夹中创建一个BrowserSync.cshtml:

@using System.Configuration
@if (ConfigurationManager.AppSettings["IncludeBrowserSync"]?.ToLower().Contains("t") ?? false)
{
    <!-- BrowserSync:SNIPPET-->
    <script type='text/javascript' id="__bs_script__">
    //<![CDATA[
        document.write("<script async src='http://HOST:PORT/browser-sync/browser-sync-client.js'><\/script>".replace("HOST", location.hostname).replace("PORT", parseInt(location.port) + 1));
        //]]>
    </script>
    <!-- BS:BrowserSyncs:END-->
}
Run Code Online (Sandbox Code Playgroud)

正如您可以看到的片段,它与浏览器同步告诉您剪切和粘贴的情况略有不同.主要区别在于它不会包含版本号(因此npm可以在不破坏您的代码段的情况下更新浏览器同步)并且它使用端口号的约定比IISExpress服务的更高.

现在加入@Html.Partial("BrowserSync")正上方的</body任何_layout.html你有.

最后,gulpfile.js使用serve浏览同步任务完成所有工作.

var gulp = require('gulp');
var browserSync = require('browser-sync').create();
...
var dllName = "<YourProjectName>.dll";
var iisPort = <YourPortNumber>;

gulp.task('serve', ['default'], function () {

    browserSync.init({
        port: iisPort + 1;
    });

    gulp.watch("<your wildchar to find your editable css files>", ['compile-minimize-css']); 
    /*...*/
    gulp.watch("Views/**/*.cshtml").on('change', browserSync.reload);
    gulp.watch("bin/"+dllName).on('change', browserSync.reload);
});
Run Code Online (Sandbox Code Playgroud)

serve在任务运行员开始后享受自动刷新!