Параметр URL больше определенной длины с использованием ActivatedRoute, вызывающий ошибку 400 в IIS - PullRequest
0 голосов
/ 18 марта 2019

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 символов длины я получаю следующую ошибку:

Response

Это угловое приложение размещено на 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?

...