问题标签 [metabase]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
952 浏览

iis - 你如何在 C# 中备份 IIS 的元数据库?

确切的代码会有所帮助。我假设 DirectoryServices 命名空间可以做到这一点,但我找不到做到这一点的方法。


我需要实际的 C# 代码。到目前为止,我发现的所有示例都是 VB 或 VBScript。我发现的 C# 示例用于读取/设置 ADSI 属性。像备份这样的命令似乎具有某种 .NET 语法,我不清楚如何使用。在 VB 中有一个简单的备份命令。需要 .NET 中的等价物。

0 投票
2 回答
7837 浏览

asp.net - 获取 IIS 条目的元数据库路径(安装已停止,因为指定的路径不是有效的 Web 应用程序)

我绝不是系统管理员,所以如果我错了,请纠正我。

我想运行 aspnet_regiis.exe -s。这需要我网站的元数据库路径。

如何找到此元数据库路径?

0 投票
3 回答
923 浏览

.net - 是否有 .NET 库或 API 可以与/编辑 IIS 元数据库进行交互?

...或者我是否坚持滚动我自己的“XML 切割”功能。我想创建一个小型任务托盘应用程序,这样我就可以快速将虚拟目录重新指向我硬盘上的几个文件夹之一。

一点背景:

我的开发机器上有我们代码库的 3 个不同的 svn 分支。

我们的应用程序与我安装的第 3 方 CMS 集成

为了工作,我们的应用程序必须位于同一个根目录中。所以:

根据我正在处理的分支,我/app/通过进入 IIS 管理器将目录重新指向上面列出的 3 个路径之一。只是觉得有一个快速应用程序为我做这件事会很方便。

0 投票
2 回答
18400 浏览

iis - 如何安全地将所有 IIS 设置从一台服务器导出到另一台服务器?

我正在尝试构建一个虚拟机来克隆我们的 webapp 生产实例中使用的服务器之一,以便我们可以对其进行部署测试。

我已经完成了所有必要的文件,安装了 IIS,启动并运行了数据库。在我看来,剩下的就是将所有 IIS 设置从生产环境复制到虚拟机。过去,我在类似的情况下只是简单地备份元数据库,找到文件,将其移动到新机器,然后恢复。然而,这是一个更困难的场景,当我尝试这样做时,目标机器告诉我元数据库文件具有“无效签名”。

谷歌搜索了一段时间,我发现对此的建议是使用 iiscnfg.vbs /export 但是,此页面上的 msdn 页面建议使用iiscnfg.vbs /copy(尽管链接指向自身)。

因此,按照所有复制步骤,我得到以下输出:

看起来不错,除了在目标计算机上似乎没有任何改变。是什么赋予了?还有另一种方法可以做到这一点吗?

0 投票
2 回答
1568 浏览

iis-6 - 以编程方式从元数据库 IIS6 中删除 etag 后缀(更改编号)

IIS 6.0 以“hash:changenumber”的格式生成 eTag 值。每次 IIS 重置时,changenumber 都会增加,因此您的 eTag 仅在 IIS 进程的生命周期内有效。重启,数字上升,hash:changenumber != hash:changenumber+1。

解决此问题的方法是对 changenumber 进行硬编码,这可以使用元数据库资源管理器(一种用于编辑元数据库的 .NET 实用程序)或通过在 IIS 服务停止时编辑 XML 文件来实现。

我想在服务器运行的情况下以编程方式执行此操作,就像我可以使用 ADSI 或 WMI 设置所有其他元数据库属性一样。对于这个似乎不可能,因为该属性(仅在内部称为 MD_ETAG_CHANGENUMBER)似乎没有匹配的属性名称。

以下是 VBScript 中的问题示例:

输出:

我希望能够在 C# 中设置这个值。除了停止 IIS、在 XML 中设置值并重新启动它之外,是否有一种以编程方式设置此值的方法?

我最好的想法是(ab)使用 Metabase Explorer 附带的 ISMbLib.dll,所以如果有人有使用它的经验,我很想听听。

参考:

0 投票
2 回答
26177 浏览

iis - 如何找到 C:\Inetpub\AdminScripts\ADSUTIL.VBS 的相对路径?

IIS 6 和更早版本附带一个名为ADSUTIL.VBS的实用程序脚本:

Adsutil.vbs 是一个 IIS 管理实用程序,它使用 Microsoft Visual Basic 脚本版 (VBScript) 和 Active Directory 服务接口 (ADSI) 来操作 IIS 配置。该脚本应使用随 Windows Script Host 一起安装的 CScript 运行。

换句话说,此工具允许您从命令行以编程方式更改IIS 元数据库设置。

我想从 InstallShield 项目中调用此工具,以便对 IIS 进行一些配置更改。我很好奇重新分发脚本是否合法(源代码中没有合法的措辞)或简单地通过以下方式启动命令:

并希望该脚本存在于该位置的磁盘上。

所以我的问题是- 即使机器上的其他一些网站(inetpub 根目录)位于非系统驱动器上,它是否总是存在于上述路径中?似乎所有引用 ADSUTIL 工具的 MSDN 和其他 Microsoft KB 文章都是通过使用上面的 %SYSTEMDRIVE% 路径来实现的。

我看到至少还有其他尝试通过将 cscript.exe 和 adsutil.vbs 与他们的 InstallShield 项目一起分发来解决这个问题。

也许有一个注册表项或其他方法来获取 Inetpub\AdminScripts 路径的位置?

也许我应该只编写一个C# 应用程序来更改值我自己的 VBScript,然后用我自己的小应用程序分发?

0 投票
3 回答
1518 浏览

c# - asp.net iis 元数据库不返回所有站点

我在 ASP.Net 中使用如下代码来枚举 IIS 中的网站:

但是,我发现 16 个站点中只有前 11 个站点得到处理。我已经为此奋斗了几个小时,但找不到任何方法可以通过 IIS 中的前 11 个站点。我试过递归搜索,我试过使用 DirectorySearcher 无济于事,我试过多次枚举或使用某种过滤器但没有任何运气。

有任何想法吗?

谢谢!

~ 蜜拉莫克

0 投票
1 回答
683 浏览

c# - 如何使用 C# 还原 IIS 元数据库备份

我在这里找到了描述如何在 C# 中备份 IIS 元数据库的 Stack Overflow 问题,并且我已经成功地使用此处引用的代码使其工作。但是,我很难使用 C# 代码恢复这些备份(或者实际上是在 IIS 中手动创建的任何备份)。

有谁知道如何做到这一点,或者即使可以做到?与备份本身不同,我无法在网上找到任何此类示例。

我尝试了以下代码,但收到错误“调用目标已引发异常”

现在,虽然我确定我正在使用错误的名称和/或对象结构调用该方法,但我无法在任何地方找到调用它的正确方法......

有人可以指出我正确的方向吗?

0 投票
1 回答
733 浏览

c# - 连接到远程 2008 服务器上的 IIS 元数据库

我编写了一些代码来检查 iis 元数据库以查看安装了哪些站点以及它们的虚拟目录保存在哪里。此代码在服务器本地运行时运行良好。

我正在尝试扩展它以使其远程工作。我正在努力让它进行身份验证的事情。我目前正在使用LogonUserapi,但这总是在登录时返回 false

  • 我知道我拥有的证书很好
  • 我和服务器之间没有防火墙
  • 如果我在没有LogonUserAPI 调用和用户 runas 的情况下从命令行运行应用程序,我会收到错误消息:COMException (0x80005000)

任何想法将不胜感激。

0 投票
2 回答
1488 浏览

cookies - 当从文件导入虚拟目录时,IIS 6 强制 AppRoot/Starting Point 为大写

我已经在网上搜索了这个并且找不到任何东西(以及一个远程相关的帖子),所以我在这里。

我们在 IIS 6 中有多个使用表单身份验证的 ASP.NET 应用程序,每个应用程序都有专用路径。由于路径区分大小写,因此它必须与 URL 的路径部分完全匹配。但是,由于 IIS 6 Metabase for AppRoot(或 IIS UI 中的起点)的大小写不正确,只要 URL 先前在服务器上解析并以不正确的大小写发送到客户端,bowser 就不会将表单 cookie 发送到服务器。

示例:
App URL = " https://Test.net/Application1 "
Cookie 路径= /Application1
Metabase AppRoot = /LM/W3SVC/1393818691/ROOT/APPLICATIONPATH1
Resolved URL = " https://Test.net/APPLICATIONPATH1 "

现在到根本原因...
我们在特定情况下手动在测试服务器上创建虚拟目录(匹配每个应用程序的路径)。然后,我们使用 UI 将虚拟目录导出到 XML 文件,然后将其导入到另一台服务器(比如说生产),此时 IIS 决定将元数据库的 AppRoot 元素大写。

任何人都可以对此有所了解吗?IIS 上是否有我不知道的设置?我试图避免在导入后手动编辑元数据库。那是一个错误吗?