![通过命令行在 IIS 6 中集成身份验证](https://linux22.com/image/483485/%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%9C%A8%20IIS%206%20%E4%B8%AD%E9%9B%86%E6%88%90%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81.png)
在部署 ASP.NET 应用程序的新版本时,我们需要将特定页面的身份验证方法设置为“仅集成”。我们可以从 IIS 管理控制台执行此操作,但希望编写一个脚本(批处理或 powershell,无所谓)来进行更改,以确保部署一切顺利。
应用程序中的其余页面将允许不同的身份验证方法,但此特定页面仅允许集成。
在同一个部署中,我们还需要更改所有 401 错误的自定义错误页面的位置,最好也从命令行进行更改。
答案1
AdsUtil.VBS 是你的朋友:
adsutil.vbs set W3SVC/1/root/AuthNTLM true
adsutil.vbs set W3SVC/1/root/AuthAnonymous false
adsutil.vbs set W3SVC/1/root/AuthBasic false
adsutil.vbs set W3SVC/1/root/AuthPassport false
adsutil.vbs set W3SVC/1/root/AuthMD5 false
这与以下内容相同:
adsutil.vbs set W3SVC/1/root/AuthFlags 5
请注意,<1> 是您的网站 ID。
对于 CustomErrors,您需要更新 root/HTTPErrors 字段,它实际上是一个 LIST 项。王大卫有适合此目的的脚本:列表文件
chglist.vbs W3SVC/1/HttpErrors 404 404,*,URL,/CustomErrors/404.asp /COMMIT
对于单个文件,您可以在 /Root/ Path 之后添加它们:
adsutil.vbs set W3SVC/1/root/MyFile.txt/AuthFlags 5
答案2
您可以从 web.config 文件控制身份验证。您可以将以下内容放入 web.config 中(来自http://msdn.microsoft.com/en-us/library/aa291347(VS.71).aspx):
<system.web>
<!-- mode=[Windows|Forms|Passport|None] -->
<authentication mode="Windows" />
</system.web>
或者,您可以查看 IIS 5 和 6 的 System.DirectoryServices API(http://msdn.microsoft.com/en-us/library/system.directoryservices.aspx)或 IIS 7 的 Microsoft.Web.Administration API(http://msdn.microsoft.com/en-us/library/microsoft.web.administration.aspx)。