允许在 IIS/Azure 中的 ASP.NET Core 的 URL 中使用冒号 (:)

2023-12-03

我有一个正在部署到 Azure 的 ASP.NET Core 应用程序,该应用程序在 URL 中接收包含冒号(时间戳)的字符串。

例如:http://localhost:5000/Servers/208.100.45.135/28000/2017-03-15T07:03:43+00:00, or http://localhost:5000/Servers/208.100.45.135/28000/2017-03-15T07%3a03%3a43%2B00%3a00URL 编码。

使用 Kestrel 在本地运行时效果非常好(dotnet run),但部署到 Azure 后我收到此错误:The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

快速搜索发现,这是由于 URL 中使用了无效字符(即冒号)造成的。传统的修复方法是将此部分添加到web.config:

 <system.web>
     <httpRuntime requestPathInvalidCharacters="" />
 </system.web>

但是,将其添加到 Azure 上的 web.config 后,我发现没有任何变化。我想这是由于 ASP.NET Core 托管模型的差异造成的。

这是我目前的web.config:

<configuration>
    <system.web>
        <httpRuntime requestPathInvalidCharacters=""/>
        <pages validateRequest="false" />
    </system.web>
    <system.webServer>
        <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath="dotnet" arguments=".\Server.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
    </system.webServer>
</configuration>

以及相关的控制器头...

[HttpGet]
[Route("{serverIpAddress}/{serverPort}/{approxMatchStartTimeStr}")]
public IActionResult GetMatchEvents(string serverIpAddress, string serverPort, DateTimeOffset approxMatchStartTimeStr)
{
    ...
}

如何让 IIS/Azure 允许 URL 中使用冒号字符?


您遇到的问题与路径中的冒号 (:) 无关,它实际上是IIS 不喜欢的加号 (+)。加号是否编码为“+”或“%2B”并不重要。您有两个选择:

  1. 将 plus/DateTimeOffset 从路径移至 IIS 不介意的查询字符串。
  2. 将 IIS 请求过滤模块配置为“allowDoubleEscaping”。

示例 web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <security>
            <requestFiltering allowDoubleEscaping="true" />
        </security>
        <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath="dotnet" arguments=".\Server.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
    </system.webServer>
</configuration>

当前 web.config 的 system.web 部分与 ASP.NET Core 无关。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

允许在 IIS/Azure 中的 ASP.NET Core 的 URL 中使用冒号 (:) 的相关文章

  • 有没有办法在.NET Core FilterAttribute 中获取请求正文?

    我的请求示例 http localhost 8065 api note POST content type application json request body id 1234 title test status draft 响应应该
  • 为什么 DropDownList.SelectedValue 依赖于 viewstate?

    如果我在我的页面上设置 EnableViewState true ViewStateMode Disabled 然后 页面的视图状态被禁用 除非覆盖 然后 尝试读取 假设控件已在上次转储到屏幕时填充并选择了一个值 MyDDL Selecte
  • “固定请求数”后应用程序池回收

    IIS的应用程序池设置为 固定请求数 后回收有什么影响 假设这个数字是100 第99个人连接到我的网站 那么第100个人来了 就会触发应用程序池回收 这是否意味着会话 1 99 的所有会话信息都将丢失 进程内会话将在应用程序池工作进程重新启
  • 删除 Azure 服务总线中的死主题

    我试图在这个问题上做足功课 但我所做的任何搜索都没有让我更接近答案 最近的命中是检测并删除 Azure 服务总线上的孤立队列 主题或订阅 https stackoverflow com questions 12334838 detect a
  • 错误:“运行所选代码生成器时出错:包恢复失败”

    我正在尝试将控制器添加到 ASP NET Core 项目中的解决方案中 当我尝试这样做时 我收到此错误 我收到相同的消息 为控制器添加最小依赖项和完整依赖项 我也有这个问题 使用实体框架添加控制器 gt 带有操作的 API 控制器 将给出
  • 更新面板异常处理

    当我在正在构建的 ASP NET Web 应用程序中实现的 UpdatePanel 中发生异常时 它们会导致页面上出现 JavaScript 错误 并在警报中提供一些高级错误输出 这对于开发来说还可以 但是一旦系统投入生产 由于多种原因 这
  • 保护 ASP.NET MVC 应用程序中的 ajax 调用的安全

    我有一个基于 ASP NET MVC 的应用程序 它允许根据用户进行不同级别的访问 当前的工作方式是 当用户访问页面时 会根据数据库进行检查以确定用户拥有的权限 然后根据用户拥有的访问级别选择视图 有些用户比其他用户看到更多数据并拥有更多可
  • 使用 JavaScript 选择用户控件中的元素

    我有一个包含用户控件的 Web 表单 我希望能够使用 JavaScript 从表单页面访问用户控件中的 html 元素 我尝试了以下方法 document getElementById 但这返回了null 我用 firebug 环视了一下
  • 如何让 shell_exec 在 IIS 6.0 上运行

    问题 我有一个 PHP 脚本 它使用shell exec运行 pdf 到文本转换器 为了简化问题 我创建了一个简短的脚本 使用shell exec只是回显的输出dir命令 当我在 Apache 服务器上运行它时 一切都按预期运行 当我切换到
  • 使用 PHP/COM/ADSI/LDAP 更改 AD 密码

    我已经被这个问题困扰了好几天了 我尝试了各种解决方案均无济于事 请帮忙 Problem 我们有两个域控制器 它们不属于我们的管理范围 我们能够通过端口 389 上的 LDAP 进行连接 但无法通过端口 636 安全连接 我们正在开发一个系统
  • 如何从 PowerShell 指定应用程序池身份用户和密码

    我在自动化 Web 应用程序设置和使用应用程序池标识适当配置 IIS 方面遇到了很多困难 我在用 PowerShell 编写的 Web 应用程序部署脚本中执行此操作 我的要求是我需要 PowerShell 脚本将应用程序池身份用户设置为特定
  • Azure 错误 - 连接字符串困难

    我正在 vs 2015 中使用 mvc5 应用程序 每当我尝试从数据库访问项目时都会收到错误 用户 your username 登录失败 当我进入 Azure 门户时 允许访问 Azure 服务 设置处于打开状态 并列出了我的客户端 IP
  • 如何将 Telerik RadGrid 默认设置为编辑模式? (ASP.NET)

    我在 RadGrid 中有一个复选框列 我希望用户能够选中 取消选中它并设置附加属性 但是 当网格呈现时 复选框将被禁用 因为网格不处于 编辑模式 我找到的所有示例都希望我经历一个漫长的过程 选择记录 将其置于编辑模式 更改值 保存值 ya
  • ASP.NET MVC 防伪造令牌不安全

    在没有 ssl 的情况下向服务器发出请求时 我实际上可以看到 MVC3 框架以纯文本形式生成的验证令牌密钥 该密钥存储在名为 RequestVerificationToken Lw 的 cookie 中 在混合安全环境中 实际上可以在向非
  • 如何强制控制器/操作使用 JsonValueProvider

    再会 我正在使用 ASP NET MVC 3 其中JsonValueProvider http haacked com archive 2010 04 15 sending json to an asp net mvc action met
  • EditorFor 的最小值和最大值

    我一直在尝试这段代码来设置我的最小值和最大值EditorFor
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 对使用“Identity as UI”的 Web 应用程序验证 .NET Core 2.1 SignalR 控制台客户端

    使用 NET Core 2 1 和 VS2017 预览版 2 我创建了一个简单的 Web 服务器 其中包含 Identity as UI 如下所述here http www talkingdotnet com how to scaffold
  • 如何将 tfvc 迁移到 Git(包括历史记录)

    我们计划从 tfvc 迁移到 Git 版本控制 我们有一些 GB 的代码和数千个变更集 我阅读了一些文章并浏览了 Microsoft 文档 发现了 2 个选项 提示迁移 我可以在其中使用 Azure Devops 内置工具 导入存储库 它有
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向

随机推荐

  • CSS 动画适用于 Chrome,但不适用于 Safari

    我不明白这是怎么回事 我正在更新一个仍然使用选取框标签的网站 因此我用更平滑的 尽管仍然是选取框 CSS 动画替换 问题是它在 chrome 和 firefox 中工作正常 但在 safari 中不一致 有时加载 有时不加载 通过网站上的链
  • Linux 中的 PATH 环境变量

    我想知道Linux操作系统给出的标准环境变量 如PATH HOME 是如何自动设置的 这些是从哪些文件读取的 当特定用户登录时 应该有一些文件可以设置这些变量 我想在 cnicutar 已经提到的内容上添加更多细节 环境变量包括PATH c
  • 如何为嵌套状态创建 redux-persist 黑名单?

    这是我的代码persistConfig and store 我想补充一下blacklist for tracking 但不适用于所有跟踪状态 而仅适用于tracking checkingOut tracking checkingIn and
  • 具有清单版本 2 的 CORS Chrome 扩展

    编写 google chrome 扩展时可以使用 CORS 吗 我看到了这个 http developer chrome com extensions contentSecurityPolicy html 我尝试将其插入清单中 conten
  • 在 Snakemake HTML 报告中包含参数和源代码

    我想在我的html报告中包含shell命令以及snakemake规则的外部脚本的源代码 我看到人们在RULE序列的表中包含这些 下面的示例是文档中基本示例的一部分 https snakemake readthedocs io en stab
  • 从每个组件捕获鼠标事件

    我的 WinForm C 应用程序上的 MouseEvents 存在问题 我想要得到all鼠标单击我的应用程序 但我不想在每个子组件中放置一个侦听器 也不使用 Windows 鼠标挂钩 在 Flash 上 我可以在舞台上放置一个侦听器来获取
  • 更改命令面板的键绑定

    如何更改 Visual Studio Code 中命令面板的键绑定 它没有出现在键盘快捷键中 并且一般情况下和特定情况下的互联网搜索都没有提供答案 我找不到它的原因是因为它在键盘快捷键中显示为 显示所有命令 而不是 命令调色板
  • 使用 jython 获取环境(windows 或 unix)

    如何确定环境是windows还是unix 我想执行类似的代码 如下所示 请建议 import os if os getenv windows os system cmd c if os getenv unix os system sh sh
  • PHPMailer 附件类型和大小限制

    我有一个表单 我正在使用 PHPMailer 将该表单中的数据发送到我的电子邮件 用户也可以发送附件 但我有一个问题 如何使 PHPMailer 拒绝大于 2Mb 的附件并仅允许 iamge 附件 不允许其他类型的文档 这是我使用 PHPM
  • 如何在 pandas 中使用 pd.cut

    谁能帮我弄清楚为什么这不起作用 ages 15 19 20 24 25 29 30 34 35 39 40 44 45 49 50 54 55 59 60 64 65 69 70 74 75 79 80 84 race age group
  • 从函数设置单元格值

    细胞内容物A1 is test 2 where test是函数 Function test ByRef x As Double As Double Range A2 x test x x End Function 你能解释一下为什么这给出了
  • PreventDefault() 对我不起作用

    为什么这会拒绝工作 HTML 的东西 div ul li span a href contact html Contact a span li ul div JavaScript 的东西 div nav bar filter a click
  • 为什么代码不以 Pretty Json 格式打印?

    这是我的代码 我正在尝试将输出打印为漂亮的 json 格式 但不明白为什么它不打印漂亮的 json 这是我每次尝试后得到的输出 data host php net class IN ttl 30 type MX pri 0 target p
  • 新的 Typescript“满足”运算符

    这是一个来自官方公告有关satisfies操作员 type Colors red green blue Ensure that we have exactly the keys from Colors const favoriteColor
  • ORMLite:如何在没有外键的情况下连接两个表

    我必须加入两个独立的表sqlite 他们没有任何外键关系 例子 表A有一个字段name 表B有一个字段primaryName 我想做类似的事情 select A from A inner join B on A name B primary
  • 在 VS Code 中调试在 Docker 中运行的 Node Typescript 应用程序

    我正在 Docker 中运行一个 Node 应用程序 docker compose 我使用 Traefik 作为代理 我希望能够在 VS Code 中调试它 但我无法连接到我的应用程序 connect ECONNREFUSED 127 0
  • 使用导航控制器推送后 UIScrollView 滚动不起作用

    我有一个奇怪的问题 我在视图层次结构的一部分中有一个 UIScrollView 当视图通过 UITabBarController 呈现时它工作得很好 但在使用导航控制器推送后根本不起作用 它是推送到根顶部的第三个 vc 滚动视图是在故事板中
  • 按钮在应用程序上不可见。怎么了?

    我为 我的测试应用程序 创建了一个空活动 它在预览部分中如下所示 但是当我生成一个构建 apk 并在我的手机中使用相同的结果时 结果如下 我只能查看左上角的退出按钮 但其他两个按钮应该位于其上方missing 我也尝试重新排列屏幕上的图标
  • NoSuchMethodError: org.apache.http.conn.scheme.Scheme.(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory

    我正在maven项目中运行selenium测试 这个项目是GWT Web应用程序 pom xml中有GWT依赖项 hibernate依赖项 我在测试包中创建了一个新类来运行selenium测试用例 我还包括selenium服务器 2 33
  • 允许在 IIS/Azure 中的 ASP.NET Core 的 URL 中使用冒号 (:)

    我有一个正在部署到 Azure 的 ASP NET Core 应用程序 该应用程序在 URL 中接收包含冒号 时间戳 的字符串 例如 http localhost 5000 Servers 208 100 45 135 28000 2017