【问题标题】:Server.Transfer to internal virtual applicationServer.Transfer 到内部虚拟应用程序
【发布时间】:2009-12-04 07:51:35
【问题描述】:

我的问题是如何管理位于同一主机上的多个虚拟应用程序

firstdomain.com 被重定向到 firstdomain.com/1 seconddomain.com 被重定向到 seconddomain.com/2 等等... 每个新域必须位于不同的文件夹中,现在它工作正常。 但这会造成一些不便,例如 seconddomain.com/1 显示的是 firstdomain.com 网站。

我正在尝试在根目录“/”创建类似调度的内容,以使用 Server.Transfer("") 传输必要的域。

但它并没有像我想象的那样工作:

Server.Transfer("/" + folder + "");

导致此错误:

“/”应用程序中的服务器错误。错误 执行子请求 /web_文件夹。

描述:一个未处理的 期间发生异常 执行当前的 Web 请求。 请查看堆栈跟踪以获取更多信息 有关错误和位置的信息 它起源于代码。

异常详情: System.Web.HttpException:错误 执行子请求 /web_folder.

Server.Execute("/" + folder + "");

也会导致错误:

执行子请求时出错 /web_folder.

描述:未处理的异常 在执行过程中发生 当前的网络请求。请查看 堆栈跟踪以获取有关的更多信息 错误及其起源 代码。

异常详情: System.Web.HttpException:错误 执行子请求 /web_folder.

两个应用程序都可以通过其指定的 url 正常访问。

还有两个应用程序的问题,如果我从根 web.config 使用 HttpModules,它会导致虚拟应用程序内部的编译错误。如果我在虚拟站点中添加对同一项目的引用,它可能会通过。

有什么建议吗?

我认为必须有什么解决方案,很多人需要将任何子域重定向到不重定向的子文件夹,以保留原始 URL dsplay

谢谢。

【问题讨论】:

    标签: server.transfer


    【解决方案1】:

    您不能Server.Transfer 到托管在 IIS 中与执行请求的虚拟目录不同的应用程序。

    【讨论】:

    • 什么是最好的解决方案?可以避免 .Redirect("/2") ?
    • 我认为这是因为 Server.Transfer 与 Response.Redirect 不同,将原始页面保留在内存中,并且 ISS 中的每个 Web 应用程序都有自己独立的内存域
    • 您不能在 DNS 级别进行这些重定向吗?
    • 我只有虚拟主机,我认为我在 DNS 服务器上没有权限。我只能添加/删除子域。
    【解决方案2】:

    Server.Transfer 只能发生在单个 HttpContext 上。每个虚拟目录或应用程序都有自己的 HttpContext 对象,他们不知道它们是共存的!所以你不能那样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      相关资源
      最近更新 更多