IIS7出现HTTP Error 500.19和0x8007000d错误,web.config中存在“格式不正确的XML”问题。

27

我被迫从出厂默认状态重新构建我的计算机。一切都应该是一样的,IIS版本(7.5),操作系统(Windows 7)和我的网站文件。然而,有些东西不同,因为在配置了我的网站并在浏览器中打开本地站点后,我收到以下错误信息...

  

HTTP Error 500.19 - Internal Server Error 请求的页面无法访问,因为页面的相关配置数据无效。错误代码0x8007000d

当我查看错误代码0x800700d时,它告诉我...

  

分析:此问题发生的原因是ApplicationHost.config文件或Web.config文件包含格式不正确的XML元素。要解决此问题,请参见解决方案1。

然后提供一个解决方案...

  

建议的解决方案:从ApplicationHost.config文件或Web.config文件中删除格式不正确的XML元素。

但是我没有看到任何格式不正确的XML元素,当我完全删除web.config文件时,网站可以加载,但URL重写不起作用(显然)。此外,即使我从web.config文件中删除所有XML,只留下空白,我也会收到相同的错误。它似乎对web.config文件的存在本身有问题。

供参考,这是我的web.config文件内容...

<?xml version="1.0" encoding="UTF-8"?>

<!-- this file can be deleted if you're not planning on using URL rewriting with IIS 7. -->
<!-- you can add your own files and folders that should be excluded from URL rewriting by adding them to the "pattern" below. -->
<!-- please read the online documentation on http://cfwheels.org for more information about URL rewriting. -->

<!-- SET ENABLED TO TRUE BELOW TO TURN ON THE URL REWRITING RULES -->

<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="ColdFusion on Wheels URL Rewriting" enabled="true">
                <match url="^(.*)$" ignoreCase="true" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{SCRIPT_NAME}" negate="true" pattern="^/(flex2gateway|jrunscripts|cfide|cfformgateway|railo-context|files|images|javascripts|miscellaneous|stylesheets|robots.txt|sitemap.xml|rewrite.cfm)($|/.*$)" />
                </conditions>
                <action type="Rewrite" url="/rewrite.cfm/{R:1}" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>
</configuration>

有人对如何解决这个问题有什么想法吗?


我们有两台服务器不喜欢“encoding =” UTF8“”。另一台服务器没有任何问题。仍然不知道为什么。 - Fried
6个回答

34

你记得重新安装重写模块了吗?它不是IIS 7.5的默认组件。

除此之外,这里有一个类似的问题 - 我认为与格式错误无关的部分是转移注意力的做法。


3
谢谢JohnW!我终于解决了这个问题。我确实安装了rewrite模块,但在阅读您发送给我的链接以及其中发布的所有相关链接后,我想可能是以下两种情况之一......1)AJAX未正确安装2)rewrite模块未正确安装。因此,我重新安装了.NET,然后重新安装了rewrite模块,现在它可以正常工作了。也许上一次我是先安装了.NET然后再安装rewrite模块......不确定。 - Chris Geirman

4

经过很长时间的痛苦,我终于解决了这个错误。实际原因是我在配置文件中使用了一些url重写。移除后错误消失了。下面是我从web.config中删除的代码。

  <serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="10:00:00"/>
<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
      <match url="(.*)"/>
      <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true"/>
      </conditions>
      <action type="Redirect" redirectType="Permanent" url="https://wikigurus.com/{R:1}"/>
    </rule>
  </rules>
</rewrite>

-1

我曾经和你一样在寻找XML的解决方案。

我找到了解决方法。

在web.config文件中,在文件顶部,有一个XML部分。删除下面的内容,这解决了我的问题,之后网站就可以打开了。

<system.net>
<defaultProxy>
  <proxy autoDetect="true" />
</defaultProxy>


-1

我也遇到了这个问题... 尝试使用以下方法解决错误代码0x8007000d。

<?xml version="1.0" encoding="UTF-8"?>

从您的web.config文件中删除此行。

这是一个格式不正确的XML元素。

请将其删除或注释掉。


对我也起作用的是仅删除“encoding =” UTF-8“”部分,或将其更改为UTF-16。(我正在docker容器内运行。不确定我的文件如何变成UTF-16。) - Jared Thirsk

-2

只需创建新的网站集合并将新的web.config替换为损坏的文件,这对我很有效。


-2
请安装两个 exe 文件,“dotnet-sdk-3.1.102-win-x64”和“dotnet-hosting-3.1.1-win”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接