1

我在我的一个站点中使用 UrlRewriting 模块,该站点有 2 个版本:

  1. 桌面
  2. 移动的

该网站的移动版本的代码仅驻留在桌面版本中,即如果桌面版本在,c:\websites\[websitename]那么移动网站将是c:\websites\[websitename]\mobile

现在我有一个用于 from UI 的实用程序add/modify/deletevanity url's因此vanity url's我创建了一个单独的文件,称为url.config并将其链接到web.confignode.js 下的文件rewrite。每当添加任何新的虚荣心时,我都会更新数据库,然后url.config从数据库更新整个文件并刷新web.config.

Web.config 刷新已经完成

Public Sub RefreshWebConfig()
    Dim doc As New XmlDocument()
    doc.Load(HttpContext.Current.Server.MapPath("web.config"))
    doc.Save(HttpContext.Current.Server.MapPath("web.config"))
 End Sub

上面的代码按预期工作,它刷新了web.config文件,因此添加的虚荣当场生效。

现在我的客户要求从桌面版本添加的虚荣也应该同时更新到移动版本。所以现在我正在做的是我在下创建了一个单独的文件,mobile\urls.config并链接到mobile\ web.config与桌面版本相同的文件。

现在我正在使用下面的代码来刷新 mobile\web.config 文件,如下所示:

Public Sub RefreshWebConfig()
   Dim doc As New XmlDocument()
   doc.Load(HttpContext.Current.Server.MapPath("web.config"))
   doc.Save(HttpContext.Current.Server.MapPath("web.config"))
   Dim doc1 As New XmlDocument()
   doc1.Load(HttpContext.Current.Server.MapPath("~/mobile/web.config"))
   doc1.Save(HttpContext.Current.Server.MapPath("~/mobile/web.config"))
End Sub

但是,它不会mobile\web.config使用上面的代码刷新文件,因为我需要等待大约5-10mins或有时甚至直到20mins更改反映在移动站点上。

谁能告诉我可能导致此问题的原因以及可能的解决方案是什么。

4

1 回答 1

0

我假设您这样做是为了触发应用程序回收,以便您的站点反映您所做的更改?

据我所知,更改web.config将在“某个时候”触发应用程序回收;并非总是立即发生,特别是如果网站暂时不需要导致触发的文件,在您的情况下/mobile/web.config,如果用户有一段时间没有访问移动页面,则可能不需要您。您会立即看到桌面版本上的更改,因为需要您的 rootweb.config才能加载您正在查看的页面。

如果您这样做是为了回收,为什么不只是回收应用程序而不是触摸web.config.

如果您愿意,您可以简单地通过调用以下命令强制站点重新启动:

Public Sub RefreshWebConfig()
      HttpRuntime.UnloadAppDomain();
End Sub

有关HttpRuntime.UnLoadAppDomain的更多信息

于 2013-06-03T20:51:19.823 回答