我是
ASP.NET
的新手,事实上我对此几乎一无所知,但不要绝望,我不是正在寻找教程......我的一位同事想要运行一个ASP.NET
应用程序在我们的网络服务器上。我们的网络服务器运行 Windows 2008 R2、Plesk 11 和 IIS 7.5。
到目前为止,我在尝试启用
ASP.NET
时遇到了各种各样的问题,但经过大量摆弄后,我设法让应用程序正常工作(在一定程度上)。
但是,为了使应用程序正常工作,我必须从我的
web.config
文件中删除以下行:
<configSections>
<sectionGroup name="system.webServer">
<sectionGroup name="rewrite">
<section name="rewriteMaps" overrideModeDefault="Allow" />
<section name="rules" overrideModeDefault="Allow" />
</sectionGroup>
</sectionGroup>
</configSections>
这是因为我收到错误:
解析器错误消息:节或组名称“system.webServer”是 已经定义了。对此的更新可能仅发生在配置中 定义的级别。
我的文件夹结构是这样的:
website/
TestApplication/
web.config
index.php
web.config
我已经为文件夹“TestApplication”创建了一个应用程序(并不是我真的知道这意味着什么),但这没有任何区别。
我的印象是,如果您创建一个应用程序,目录中的
web.config
将不会继承任何父配置!这里的情况似乎并非如此,因为我仍然收到错误。
我的问题是,面对上述情况我该怎么办?如何阻止应用程序继承父目录配置,或者修复当前
web.config
文件以使用 ASP.NET
?
需要注意的一件事是,我在 IIS 管理器和 Plesk 中都进行了更改,因为我无法在 Plesk 控制面板中找到特定的内容,例如:为网站内的目录创建应用程序。我不认为这是问题的原因,但仍然值得一提。
这是我的完整 web.config 文件(删除了所有规则之一,因为它们对文件没有影响):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
<sectionGroup name="system.webServer">
<sectionGroup name="rewrite">
<section name="rewriteMaps" overrideModeDefault="Allow" />
<section name="rules" overrideModeDefault="Allow" />
</sectionGroup>
</sectionGroup>
</configSections>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
<rewrite>
<rules>
<clear />
<rule name="Browser Error Rewrite" stopProcessing="true">
<match url="^errors/browser$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="_errors/browser.php?error=browser" />
</rule>
</rules>
</rewrite>
<defaultDocument>
<files>
<clear />
<add value="index.php" />
</files>
</defaultDocument>
<httpErrors>
<clear />
<error statusCode="400" prefixLanguageFilePath="" path="/_errors/error.php?id=400" responseMode="ExecuteURL" />
<error statusCode="502" prefixLanguageFilePath="" path="/_errors/error.php?id=502" responseMode="ExecuteURL" />
<error statusCode="407" prefixLanguageFilePath="" path="/_errors/error.php?id=407" responseMode="ExecuteURL" />
<error statusCode="414" prefixLanguageFilePath="" path="/_errors/error.php?id=414" responseMode="ExecuteURL" />
<error statusCode="415" prefixLanguageFilePath="" path="/_errors/error.php?id=415" responseMode="ExecuteURL" />
<error statusCode="501" prefixLanguageFilePath="" path="/_errors/error.php?id=501" responseMode="ExecuteURL" />
<error statusCode="500" prefixLanguageFilePath="" path="/_errors/error.php?id=500" responseMode="ExecuteURL" />
<error statusCode="401" prefixLanguageFilePath="" path="/_errors/error.php?id=401" responseMode="ExecuteURL" />
<error statusCode="403" prefixLanguageFilePath="" path="/_errors/error.php?id=403" responseMode="ExecuteURL" />
<error statusCode="404" prefixLanguageFilePath="" path="/_errors/error.php?id=404" responseMode="ExecuteURL" />
<error statusCode="405" prefixLanguageFilePath="" path="/_errors/error.php?id=405" responseMode="ExecuteURL" />
<error statusCode="412" prefixLanguageFilePath="" path="/_errors/error.php?id=412" responseMode="ExecuteURL" />
<error statusCode="406" prefixLanguageFilePath="" path="/_errors/error.php?id=406" responseMode="ExecuteURL" />
</httpErrors>
<handlers>
<clear />
<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
<add name="php-5.3.10" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP53\php-cgi.exe" resourceType="Either" requireAccess="Script" />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" />
</handlers>
</system.webServer>
</configuration>
您的 web.config 中似乎有两次(这就是“解析器错误消息:部分或组名称'system.webServer'已定义”错误所暗示的)。
在应用程序的 web.config 中搜索并剪切其中的代码并将其粘贴到另一个应用程序(确保代码不重复)删除您已剪切代码的代码
如果您使用的是较新版本的 IIS 或 Windows Azure,则不需要
<ConfigSection>
。它内置在新的 IIS 中。只需继续并直接在 web.config 中的 <rewrite>
下使用 <system.webServer>
标签即可。