PWA ServiceWorker无法与Asp.net核心Spa扩展一起使用

时间:2019-07-31 08:15:26

标签: asp.net-core angular-service-worker angular-pwa

我用angular创建了一个示例项目aspnet.core 2.1 Web应用程序,并用 import UIKit struct Objects { var sectionName : String! var sectionObjects : [String]! } class TableViewController: UITableViewController { var TestArray = ["Hair": ["1","2","3"],"Nail": ["1","2"],"Makeup":["1","2","3","4"]] var Sections:[String] = [] var objectArray = [Objects]() var section = 0 var nameTest:String = "" override func viewDidLoad() { super.viewDidLoad() for (name, path) in TestArray { // print("The path to '\(name)' is '\(path)'.") var nameTest = name as? String // print("value count \(TestArray[name]?.count)") Sections.append(nameTest!) } for (key, value) in TestArray { objectArray.append(Objects(sectionName: key, sectionObjects: value)) } } // MARK: - Table view data source override func numberOfSections(in tableView: UITableView) -> Int { // #warning Incomplete implementation, return the number of sections print("Table View Number of Secltions \(objectArray.count)") return objectArray.count } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 1 } override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { return objectArray[section].sectionName } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Test", for: indexPath) as? TableViewCell // Configure the cell... section = indexPath.section //cell!.textLabel?.text = objectArray[indexPath.section].sectionObjects[indexPath.row] cell?.TestCollectionView.delegate = self cell?.TestCollectionView.dataSource = self cell?.TestCollectionView.reloadData() return cell! } override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 160 } } extension TableViewController:UICollectionViewDelegate,UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { print("Collection View Number Of Item in Section (objectArray[section].sectionObjects.count)") return objectArray[section].sectionObjects.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CCell", for: indexPath) as? CollectionViewCell cell?.Name.text = objectArray[section].sectionObjects[indexPath.row] // here index out of range return cell! } } 添加了pwa

然后创建了一个带有两个控制器进行测试的小型应用。

现在,如果我在spaextension中使用angular客户端运行该应用程序,则该serviceworker已注册并正在运行,但根本不缓存资产或数据组。 客户端是用ng add @angular/pwa生成的,而--prod不会启动开发服务器,它会从'dist'文件夹中加载文件。

如果我托管客户端和具有两个主机的后端(后端spaExtension),它可以按预期工作,则应用程序,图像,字体和localhost:5555, Angular Client localhost:5556将按配置进行缓存。

api

我不知道为什么当客户端在同一主机上运行时,它为什么不起作用,但是如果单独托管,它却可以工作。 API路由可能是错误的,但是我尝试了所有可能的方法。资产没有路线,因此它仍然可以正常工作。

services.AddSpaStaticFiles(configuration => { configuration.RootPath = "ClientApp/dist"; }); app.UseSpa(spa => { // To learn more about options for serving an Angular SPA from ASP.NET Core, // see https://go.microsoft.com/fwlink/?linkid=864501 spa.Options.SourcePath = "ClientApp"; //if (env.IsDevelopment()) //{ // spa.UseAngularCliServer(npmScript: "start"); //} }); ,但是由于它在单独托管时有效,所以我认为问题不在这里。

ngsw-config

0 个答案:

没有答案