通过 localhost/folder 访问另一台服务器上的 IIS 虚拟目录时出现运行时错误

Runtime Error while Accessing IIS virtual directory on another server through localhost/folder

我们有2台服务器,在server1中,IIS配置有一个虚拟目录,里面有URL的HTML页面。

在server2中,IIS配置虚拟目录指向server1中的目录(与server1中配置的目录相同)。

在服务器 1 中通过本地主机访问 URL 时显示配置文件中提到的一般错误,而在服务器 2 中通过本地主机访问 URL 时显示运行时错误(如下所述),尽管它指出与服务器 1 指向的相同配置。服务器之间没有访问问题。

“/”应用程序中的服务器错误

运行时错误:

说明:处理您的请求时发生异常。此外,在为第一个异常执行自定义错误页面时发生另一个异常。请求已终止。

网络配置:-

<customErrors defaultredirect="GeneralErrorPage.htm" mode ="On">
<error statuscode="404" redirect="GeneralErrorPage.htm"/>
</customErrors>
  1. 设置<customErrors mode="Off" />
  1. IIS 中的虚拟目录购买者有很多 *.html 页 在服务器 1 和服务器 2 中托管 url 作为 http://localhost/buyer/info.html 显示 UI买家信息页面

很明显,server2 在访问 server1 中的目录“buyer”时没有问题。

  <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
         
            <httpErrors errorMode="Custom">
                <remove statusCode="404" subStatusCode="-1" />
                <remove statusCode="403" subStatusCode="-1" />
                <error statusCode="403" prefixLanguageFilePath="" path="/GeneralErrorPage.htm" responseMode="ExecuteURL" />
                <error statusCode="404" prefixLanguageFilePath="" path="/GeneralErrorPage.htm" responseMode="Redirect"  />
               
            </httpErrors>
            <directoryBrowse enabled="false" />
       </system.webServer>
    <system.web>

      <customErrors defaultRedirect="GeneralErrorPage.htm" mode="Off">
       <error statusCode="404" redirect="GeneralErrorPage.htm"/>
      </customErrors>

</system.web>
</configuration>

注: 手动 当我将 html 页面 (GeneralErr.htm) 添加到同一个 url http://localhost/subtest/GeneralErr.htm 时,页面加载成功。

但是在从服务器 2 托管 url http://localhost/subtest 时出现以下错误 - 获取访问错误或运行时错误

配置错误 说明:处理此请求所需的配置文件时发生错误。请查看下面的具体错误详细信息并适当修改您的配置文件。

解析器错误消息:加载配置文件时出错:无法开始监视对“\server1\c$\test\subtest”的更改,因为访问被拒绝.

关于虚拟目录的 IIS 配置 使用 IIS8 版本

在 Server1 文件夹结构中:c:\test\subtest

在 Server2 中: 虚拟目录“subtest”的 IIS 配置 物理路径: \server1\c$\test\subtest 物理路径凭证: domain\username 虚拟路径: /subtest

你一开始得到的500.19错误就像错误描述说不允许绝对路径,应该使用相对路径一样。所以可以设置相对路径来解决这个问题,或者在applicationhost中开启绝对路径,按照下划线部分配置。

<httpErrors allowAbsolutePathsWhenDelegated="true" errorMode="Custom" lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
  ...
</httpErrors>

即使开启了相对路径,通过localhsot/subtest访问还是会出现问题。

有两种方法可以解决这个问题,一种是将应用程序池修改为“无托管代码”和“经典”设置。另一种是修改应用程序池的身份,将其设置为用户与管理员权限相同,可创建一个用户或直接使用管理员。