我的 web.config 中有这个部分:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
IIS7 崩溃并抱怨身份验证部分:
模块 AnonymousAuthenticationModule
通知 AuthenticateRequest
Handler StaticFile
错误代码 0x80070021
配置错误 此配置部分不能在此路径使用。当该部分锁定在父级别时会发生这种情况。锁定要么是默认的 (overrideModeDefault="Deny"),要么是由带有 overrideMode="Deny" 或旧版 allowOverride="false" 的位置标记显式设置的。
Config Source
69: <authentication>
70: <anonymousAuthentication enabled="true" />
Run Code Online (Sandbox Code Playgroud)
所以解决这个问题的通常方法是进入%windir%\system32\inetsrv\config\applicationHost.config并解锁该部分:
<sectionGroup name="system.webServer">
<sectionGroup name="security">
<section name="access" overrideModeDefault="Deny" />
<section name="applicationDependencies" overrideModeDefault="Deny" />
<sectionGroup name="authentication">
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
<section name="basicAuthentication" overrideModeDefault="Allow" />
<section name="clientCertificateMappingAuthentication" overrideModeDefault="Allow" />
<section name="digestAuthentication" overrideModeDefault="Allow" />
<section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Allow" /> …Run Code Online (Sandbox Code Playgroud) 我有一个 ASP.NET 站点,它使用自己的一组 HTTP 处理程序并且不需要任何模块。
所以,在 IIS6 中,我所要做的就是在我的 web.config 中:
<httpModules>
<clear />
</httpModules>
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试在system.webServerIIS7 区域中执行相同操作,则在尝试查看站点时会收到 500 错误,而在 IIS 管理器中,当我尝试查看处理程序映射时,我会收到一个带有消息的弹出框:
执行此操作时出错
细节:
文档名称:
\?\C:\Sites\TheWebSiteGoesHere\web.config
行号:39
错误:违反锁
第 39 行是<clear />元素所在的位置。
一些谷歌搜索使我找到了一个涉及运行此命令的解决方案:
%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/modules
……但这并没有解决问题。
我有一个 CMS 中干净 URL 的 URL 重写设置,我的 web.config 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Clean URLs" stopProcessing="true">
<match url="^([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="?id={R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
它基本上变成index.php?id=something为something清洁的网址。非常简单,而且效果很好。
在 CMS 中很常见,为了防止后端中断,每个子目录都需要<remove name="Clean URLs" />或<clear />在其 web.config 中,因此规则不会被继承。
有没有办法在父规则中指定它根本不应该被子规则继承,方法是将规则的范围限制在当前目录?类似的东西<rule name="Clean URLs" stopProcessing="true" inherit="no">将是史诗般的。
我知道 IIS7 允许我使用 web.config xml 文件对每个目录进行配置。我有一个目录,其中包含一些不想通过网络访问的配置文件。禁止读取访问的本地 web.config 文件将是一个不错的解决方案。
web.config 文件的内容应该是什么来禁止 Web 访问这些文件?
编辑:我正在尝试将包含这些内容的 web.config 文件放在一个文件中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<authorization>
<deny users="*" /> <!-- Denies all users -->
</authorization>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但是我仍然可以直接访问目录中的文件。它出什么问题了?我如何调试正在发生的事情?
你能告诉我当我们在 IIS 服务器上编辑 Web.config(在运行时)时到底发生了什么。
依赖于 web.config 的应用程序是否自动重新启动?如果是,是否可以取消自动重启(或重新加载 web.config)?
我正在尝试在我的 web.config 文件中配置我的 IIS7 压缩设置。我正在尝试将 HTTP 1.0 请求启用为 gzip。
是否可以在我自己网站的 web.config 文件中包含此配置信息?还是我需要在应用程序级别设置它?目前,我的 web.config 中有该代码...
<system.webServer>
<urlCompression
doDynamicCompression="true"
dynamicCompressionBeforeCache="true" />
<httpCompression
cacheControlHeader="max-age=86400"
noCompressionForHttp10="False"
noCompressionForProxies="False"
sendCacheHeaders="true" />
... other stuff snipped ...
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
它不起作用:( HTTP 1.1 请求正在被压缩,而不是 1.0.0.
上面的 MSDN 页面说它可以用于:-
那么,我们可以在 web.config 文件中以编程方式基于每个网站设置这些设置吗?(这是一个 Application Web.config 文件...)我做错了什么?
欢呼:)
编辑:有人问我怎么知道 HTTP1.0 没有被压缩。我正在使用失败的请求跟踪规则,它会报告:-
DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
Reason: 3
Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END
Run Code Online (Sandbox Code Playgroud) 为了自定义 404 处理并根据托管公司的建议,我们目前正在使用以下 web.config 设置。但是,我们很快意识到,使用此配置,任何页面错误(500 错误)也会被重定向到此自定义错误页面。如何修改此配置文件,以便我们可以继续使用自定义文件处理 404,同时仍然能够查看页面错误?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultPath="/Custom404.html" defaultResponseMode="ExecuteURL">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Custom404.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
</customErrors>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud) 题:
我面临以下情况:
部署在机器“vmsomething”上的 ASP.NET .NET 4.0 Web 应用程序。
在 IIS 7.5 上运行的 Web 应用程序驻留在 vmsomething 上的 d:\webs\myapplication 中。
应用程序的配置文件:
连接.config
<?xml version="1.0"?>
<connectionStrings>
<remove name="server"/>
<add name="server" connectionString="Data Source=OUR_DB_Server;Initial Catalog=MY_INITIAL_CATALOG;Persist Security Info=False;User Id=OUR_DB_User;Password=OUR_TOP_SECRET_PASSWORD;MultipleActiveResultSets=False;Packet Size=4096;Application Name="MyApplication"" providerName="System.Data.SqlClient"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
网络配置:
<?xml version="1.0"?>
<configuration>
<connectionStrings configSource="connections.config"/>
<system.web>
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>
<compilation strict="true" explicit="true">
<assemblies>
<add assembly="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="Microsoft.JScript, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
</assemblies>
</compilation>
<authentication mode="Windows"/>
<pages>
<namespaces>
<clear/>
<add namespace="System"/>
</namespaces>
</pages>
<customErrors mode="Off">
<error statusCode="404" redirect="~/w8/index.html"/>
</customErrors>
<globalization uiCulture="de" …Run Code Online (Sandbox Code Playgroud) 我需要将生产应用设置部分保留在 Web.config 之外;我不希望将密钥和其他秘密信息保存在源代码存储库中。但是,如果我使用 IIS Mananger 编辑应用程序设置,它会更改 Web.config,这将在下次部署时被覆盖。
如何在部署时将这些设置保留在应用程序随附的 Web.config 之外?例如,这是由 Azure 网站以某种方式完成的——你在门户中配置的应用程序设置不存储在 Web.config 中——可以通过 FTP 下载文件来确认。它是如何完成的?
我正在从开发到生产发布几个 asp.net 网站。在开发中一切似乎都运行良好,但是在发布到生产环境时,我们在访问该站点时遇到了许多 javascript 错误。这似乎是服务器上的东西,尽管相同的代码已部署到测试服务器并且可以在相同的客户端上正常工作。服务器是使用 IIS7 的 Windows 2008
被抛出的错误:
一些语法错误 (scriptResource) - 其中 10 个
Error: syntax error
Source File: http://website.com/ScriptResource.axd?d=abc032_vah79hasdf87&t=123456789
Line: 3
Source Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)
错误与上述相同,但使用 WebResource.axd 而不是 ScriptResource.axd - 其中 2 个
然后两个似乎是真正的原因?
Sys is not defined
Run Code Online (Sandbox Code Playgroud)
和
WebForm_AutoFocus is not defined
Run Code Online (Sandbox Code Playgroud)
----------------- 附录 --------------------
根据建议,我查看了 ScriptResource.axd 和 WebResource.axd
正在部署的 Web 应用程序具有表单身份验证,如果引用了登录页面以外的任何页面,则重定向到登录页面。似乎这发生在 ScriptResource.axd 和 WebResource.axd 上(即登录页面尝试引用这些项目,发生重定向,因此他们无法返回 javascript,引发错误)
为此,我在 web.config 中添加了“位置”标签,以尝试允许所有用户访问这些项目,以便登录页面可以工作(请参阅下面的相关 web.config 部分)
<system.web>
<authentication mode="Forms">
<forms loginUrl="login.aspx" defaultUrl="home.aspx"/>
</authentication>
<authorization> …Run Code Online (Sandbox Code Playgroud) web.config ×10
iis ×6
iis-7 ×6
asp.net ×3
.htaccess ×1
.net ×1
asp-classic ×1
compression ×1
gzip ×1
iis-7.5 ×1
javascript ×1
rewrite ×1
url ×1