VB IE11 中的 .NET 第三方超长 URL

VB .NET Third-Party Extra-Long URL in IE11

我在开发 VB .NET 网络应用程序。该项目面向 .NET 4.0 并在 IIS 中运行。

我们有一个与第三方应用程序的接口。我们使用 SAML 在我们的网站中显示他们的信息。他们要求请求 URL 是他们的基础 URL 加上一个始终在 7,500 - 8,000 个字符左右的查询字符串。

这在 Chrome 中工作正常,但在 IE11 中 URL 被截断超过 4,000 个字符。我在Fiddler里看到就这样出来了,所以第三方不负责这个截断。

很遗憾,我们需要同时支持 IE11 和 Chrome。我们不必支持任何其他浏览器,包括早期版本的 IE。 SAML 响应被添加到 URL 中,如下所示:

Dim samlResponseStr As String = samlResponse.ToString()
Dim bytesToEncode() As Byte = Encoding.UTF8.GetBytes(samlResponseStr)
Dim encodedData As String = Convert.ToBase64String(bytesToEncode)

Dim strUrl As String = "https://training.com/SSO/NS/SAMLPatientDisplay.aspx?SAMLResponse=" & Server.UrlEncode(encodedData)

在这一点上,当然,无论我使用哪种浏览器,strUrl 都是相同的。

我已将以下内容添加到我的 web.config:

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxQueryString="100000" maxUrl="12288" />
        </requestFiltering>
    </security>
</system.webServer>

无论什么都在同一点被截断。

有没有办法强制 IE11 允许此 URL 按原样退出?

谢谢!

编辑添加:或者,有没有办法缩短代码中的 URL?这些是一次性 URLs,在初始请求之后无效,因此无需长期存储它们。

再次编辑:我不需要在任何地方显示 URL - 它不需要出现在地址栏中或添加书签或任何东西。这似乎表明在某些情况下 IE 中可能有更长的 URLs: https://blogs.msdn.microsoft.com/ieinternals/2014/08/13/url-length-limits/ 但是我没能找到更多的细节。

我可以通过以下方式让它工作:

Dim samlResponseStr As String = samlResponse.ToString()
Dim bytesToEncode() As Byte = Encoding.UTF8.GetBytes(samlResponseStr)
Dim encodedData As String = Convert.ToBase64String(bytesToEncode)

Dim strUrl As String = "https://training.com/SSO/NS/SAMLPatientDisplay.aspx?SAMLResponse=" & Server.UrlEncode(encodedData)
Response.Redirect(strUrl)

然后我遇到了问题,因为 Response.Redirect 在任何客户端代码之前执行。我创建了第二个 .aspx 页面仅供显示。除了 Response.Redirect 之外的所有代码都出现在我的原始页面上,然后 URL 被发送到新页面进行显示。

这适用于 IE11、Chrome、Firefox 和 Edge。