IIS 7.5 Mercurial 设置忽略 maxAllowedContentLength

2023-11-25

我正在尝试在 IIS 7.5 上设置 Mercurial。我有一个应用程序目录的 web.config,该目录忽略了maxAllowedContentLength属性和我只是cannot让IIS接受它!我在全球、本地和各个层面尝试了一千种不同的方式。它坚持默认的 30MB,并拒绝让我推送大于该值的变更集。它甚至没有关闭连接,只是达到 30MB 并完全停止。这不是超时问题,我尝试过从本地计算机推送到其 IP 地址。

这到底是怎么回事?

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="Python" path="*.cgi" verb="*" modules="CgiModule" scriptProcessor="C:\Python27\python.exe -u &quot;%s&quot;" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="1073741824" />
            </requestFiltering>
        </security>
        <rewrite>
            <rules>
                <rule name="rewrite to hgwebdir" patternSyntax="Wildcard">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="hgweb.cgi/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>

    <!-- I don't know if this is supposed to work... it doesn't matter where I put the settings. -->        
    <location path="*">
      <system.web>
        <!-- maxRequestLength is in kilobytes (KB)  -->
        <httpRuntime maxRequestLength="1048576" /> <!-- 1GB -->
      </system.web>
      <system.webServer>
        <security>
          <requestFiltering>
            <!-- maxAllowedContentLength is in bytes (B)  -->
            <requestLimits maxAllowedContentLength="1073741824"/> <!-- 1GB -->
          </requestFiltering>
        </security>
      </system.webServer>
    </location>
</configuration>

我发现了一些处理这个问题的方法:

要修复 IIS 中的服务器端,请下载并安装https://www.nartac.com/Products/IISCrypto/Default.aspx并单击 BEAST 按钮,或通过禁用其他协议强制使用 SSL3.0。

如果您无权访问 IIS 服务器,可以通过将 Python 回滚到版本 2.7.2 或更早版本来修复它。

如果你喜欢冒险,你可以修改sslutil.py中的mercurial源,在顶部附近,更改行

sslsocket = ssl.wrap_socket(sock, keyfile, certfile,
            cert_reqs=cert_reqs, ca_certs=ca_certs)

to

from _ssl import PROTOCOL_SSLv3
sslsocket = ssl.wrap_socket(sock, keyfile, certfile,
            cert_reqs=cert_reqs, ca_certs=ca_certs, ssl_version=PROTOCOL_SSLv3)

这将解决该问题并修复 IIS 后面的 Mercurial 的推送限制。

如果您对为什么 Python 2.7.3 破坏了这个感兴趣,请查看http://bugs.python.org/issue13885以获得解释(与安全相关)。如果你想修改 Python 本身,请在 Modules/_ssl.c 中更改该行

SSL_CTX_set_options(self->ctx,
                    SSL_OP_ALL & ~SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS);

回到 2.7.3 之前的情况:

SSL_CTX_set_options(self->ctx, SSL_OP_ALL);

编译并重新安装 python 等。如果我正确理解 OpenSSL 文档,这会增加更多的 SSL 兼容性,但会带来潜在的安全风险。

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

IIS 7.5 Mercurial 设置忽略 maxAllowedContentLength 的相关文章

随机推荐

  • 通过 jquery 上下移动选择选项

    所以我让这段代码适用于 Firefox 和 Chrome 它的作用是允许您在 HTML 选择表单中重新排序选项 但是当我通过 IE8 测试代码时 它有点不完整 它仅适用于前几次单击 之后您必须多次单击该按钮才能使其工作 有谁知道任何其他代码
  • 解析 HTML 表格最快、最简单、最好的方法是什么?

    我正在尝试获取这张桌子http www datamystic com timezone time zones html转换为数组格式 这样我就可以用它做任何我想做的事情 最好是 PHP Python 或 JavaScript 这种问题经常出
  • RxJs 可观察分页

    第一 这是我使用 RxJs 的第一个项目 我想通过使用它我会学到最好的东西 我找到了这个答案 使用 RxJs 将分页请求转换为 Observable 流但评论里却说 您仍然超出了最大调用堆栈 返回大约 430 页 我认为递归可能不是最好的解
  • Shift + 鼠标滚轮水平滚动

    对于水平滚动 使用 Shift 滚轮相当常见 这两者都相当容易捕获 我可以使用 MouseWheel 事件以及由 KeyDown KeyUp 事件设置的标志来跟踪何时按下 Shift 键 但是 如何真正触发水平滚动呢 我知道 WM MOUS
  • GHC 7.7 中引入的自由覆盖条件破坏了 GHC 7.6 中有效的代码

    The idea 我正在写一个DSL 编译为 Haskell 该语言的用户可以定义自己的不可变数据结构和关联函数 我所说的关联函数是指属于数据结构的函数 例如 用户可以编写 用 pythonic 伪代码 data Vector a x y
  • 如何使用 gitpython 对当前提交与上次提交进行 git diff?

    我正在尝试掌握 gitpython 模块 hcommit repo head commit tdiff hcommit diff HEAD 1 but tdiff hcommit diff HEAD HEAD 不起作用 也不 HEAD HE
  • 是否可以为 UITableView 添加边框样式? (不是边框颜色/边框宽度)

    是否可以为 UITableView 添加边框样式 不仅仅是边框颜色和边框宽度 例如凹槽边框样式 嘿 您可以使用以下方式为您的视图添加边框CALayer可以在QuartzCore Framework 以下链接将帮助您了解CALayer详细 C
  • 如何使用 Eclipse 将特定于平台的本机库包含在 .JAR 文件中?

    我刚刚开始学习JNI 我一直在遵循一个简单的示例 并且创建了一个调用本机库中的 Hello World 方法的 Java 应用程序 我想以 Win32 和 Linux x86 为目标 我的库驻留在 DLL 中 当 DLL 添加到 Eclip
  • 如何阻止 Eclipse 在每次捕获的异常时崩溃?

    当我开始调试 java 项目时 Eclipse 不断地破坏第 3 方库中的随机异常 这非常烦人 知道如何阻止这个吗 我尝试单击断点视图上的 图标 我可以看到 挂起捕获的异常 和 挂起未捕获的异常 复选框都没有选中 Eclipse 仍然在异常
  • SCSS 与字符串的算术运算

    selector width 10px width width 2 output 10px but expected 5px 上面的代码是不言自明的 请纠正我 您可以使用calc功能 selector width 10px width ca
  • 为什么不能在字节变量中存储负值?

    我正在转换可以在 Java 中运行但不能在 C 中运行的代码 byte buffer new byte 64 this buffer int this count 0x3F 128 这会生成编译时错误 常量值 128 无法转换为 字节 如何
  • 如何在 MySQL 中创建时间点架构

    I read this有关为数据库构建时间点架构的文章 在我看来 这是一个优雅的解决方案 但这篇文章是在不久前 2007 年 就已经准备好的 我想知道 1 还有其他方法可以解决这个问题吗 2 这种方法和其他方法的优缺点是什么 3 是否有可供
  • Burn 中的RegistrySearch 与 util:RegistrySearch

    我在用Burn构建 WiX 引导程序 我意识到如下所示的RegistrySearch实际上并没有搜索注册表 我用了过程监控器监视注册表访问
  • Haskell:类型推断和函数组合

    这个问题的灵感来自于此answer另一个问题 表明您可以使用定义为的函数从列表中删除每个出现的元素 removeall filter 用铅笔和纸根据以下类型进行计算filter and 该函数的类型为 removeall Eq a gt a
  • 将 Ruby 对象序列化为 JSON 并返回?

    我想将一个对象序列化为 JSON 将其写入文件并读回 现在我希望在 net 中有类似的东西 你有 json net 或类似的东西 然后你会这样做 JsonSerializer Serialize obj 并完成它 您将返回 JSON 字符串
  • asp.net mvc 中的动态子域

    我对 ASP NET 相当陌生 对 IIS 也没什么经验 我想让我的应用程序的每个用户都有自己的子域 但都使用相同的控制器 然后子域将控制显示的内容 Example user1subdomain mydomain com Whatever
  • 为什么这样的递归不会出现堆栈溢出?

    我不明白为什么打电话recSetTimeOut 不会导致堆栈溢出错误 而recPromise does const recSetTimeOut gt console log in recSetTimeOut setTimeout recSe
  • 为什么要升级到 c# 4.0?

    我知道 C 4 0 中有一些不错的新功能 但我无论如何也想不出升级现有项目或切换到新项目的令人信服的理由 我看过一些帖子 人们说如果他们的托管服务不提供 Net 4 他们会寻找另一个提供商 因为 Net 4 是他们的方向的核心
  • malloc和free是如何实现的?

    我想实现我自己的动态内存管理系统 以添加有助于管理 C 内存的新功能 我使用 Windows XP 和 Linux Ubuntu 实现 malloc 和 free 等功能需要什么 我认为我必须使用最低级别的系统调用 对于 Windows 我
  • IIS 7.5 Mercurial 设置忽略 maxAllowedContentLength

    我正在尝试在 IIS 7 5 上设置 Mercurial 我有一个应用程序目录的 web config 该目录忽略了maxAllowedContentLength属性和我只是cannot让IIS接受它 我在全球 本地和各个层面尝试了一千种不