app-routing.module.ts:
const routes: Routes = [
{ path: "", component: MapComponent },
{ path: "map/:lookupValues", component: MapComponent },
]
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule { }
В map.component.ts я читаю параметр следующим образом:
this.snapshotParam = this.route.snapshot.paramMap.get("collaterals");
var inputData = this.snapshotParam.split('_');
URL выглядит следующим образом:
http://localhost:4203/map/val1_val2_val3... [length < 1000 bytes ]
Приблизительно после 300 символов длины я получаю следующую ошибку:
Это угловое приложение размещено на IIS (я проверил, что«Фильтрация запросов» по умолчанию имеет максимальную длину URL-адреса 4096 байт, а мой запрос составляет <1000 байт (при условии, что 1 символ = 1 байт, конечно) </p>
web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<httpRuntime maxUrlLength="4096" />
</system.web>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
<defaultDocument>
<files>
<clear />
<add value="index.html" />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="iisstart.htm" />
<add value="default.aspx" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
Использование ?lookupValue=val1_val2_val3...
не выдает эту ошибку, но я использую модуль ActivatedRouter
для анализа параметра. Я что-то здесь упускаю? Или есть способ прочитать параметр в формате строки запроса, например, ?lookupValue=val1_val2_val3...
, используя ActivatedRouter?