Asp.net mvc Asp.Net MVC中的服务人员,范围

Asp.net mvc Asp.Net MVC中的服务人员,范围,asp.net-mvc,service-worker,Asp.net Mvc,Service Worker,对于asp.net mvc应用程序,服务工作者的作用域必须是根吗?它需要看到控制器,需要脚本等等。我关心的是在一个非常大的应用程序上会发生什么 如果使用某个区域,您可以在该区域中包含脚本,这是缩小范围的一种方法,是否有任何最佳做法?您可以将service worker文件放置在您想要的任何位置。我是这样做的 假设您设置了一个名为“Customer”的区域。因此,您的文件结构将是“/Areas/Customer”、“/Areas/Customer/controller”、“/Areas/Custo

对于asp.net mvc应用程序,服务工作者的作用域必须是根吗?它需要看到控制器,需要脚本等等。我关心的是在一个非常大的应用程序上会发生什么


如果使用某个区域,您可以在该区域中包含脚本,这是缩小范围的一种方法,是否有任何最佳做法?

您可以将service worker文件放置在您想要的任何位置。我是这样做的

假设您设置了一个名为“Customer”的区域。因此,您的文件结构将是“/Areas/Customer”、“/Areas/Customer/controller”、“/Areas/Customer/Models”、“/Areas/Customer/Views”等。假设您没有更改路由,url将是“”。如果您希望将服务人员的作用域设置为“/customer”,但在根目录中没有服务人员javascript文件,则可以执行以下操作

我将做另一个假设,您在“/Areas/Customer/scripts”的这个位置创建了一个“scripts”文件夹来保存您的服务器工作者js文件

在注册服务人员的javascript文件中,您可以执行以下操作

if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/areas/customer/scripts/serviceworker.js", { scope: "/customer" })
    .then(registration => {
        console.log("Service Worker registered properly.");
    })
    .catch(error => {
        console.log("Service Worker NOT registered properly.");
    });
}
如果您现在运行站点,您将收到类似于以下内容的错误:“提供的作用域('/customer')的路径不在允许的最大作用域('/areas/customer/scripts/')。请调整作用域,移动服务工作者脚本,或使用服务工作者允许的HTTP头来允许该作用域。”

您需要做的是使用以下文本更新web.config文件,以便发送服务工作者允许的HTTP头。这将出现在web.config的“配置”部分

  <location path="areas/customer/scripts/serviceworker.js">
    <system.webServer>
      <httpProtocol>
        <customHeaders>
          <add name="Service-Worker-Allowed" value="/customer" />
        </customHeaders>
      </httpProtocol>
    </system.webServer>
  </location>

现在,您可以将serviceworker.js文件放在根目录以外的文件夹中,但仍可以将serviceworker的作用域保留在正确的区域