【问题标题】:Unable to invoke the apis in two website instances with same assembly name in iis7无法在 iis7 中调用具有相同程序集名称的两个网站实例中的 api
【发布时间】:2013-10-03 12:43:24
【问题描述】:

我有一个在 IIS 中作为“SiteA”托管的站点,我需要将同一个站点显示为“SiteB”,但主题发生了一些变化。

网站发布到 inetpub 的文件夹结构如下:

Fold1/SiteA

Fold1/SiteB

有了这些,我就可以看到网页了。我在 SiteB 中调用的 api 返回 404 错误。

可能是什么原因?难道不能从同一个项目中取出两个不同的站点吗?

请帮忙。

【问题讨论】:

  • 您能发布负责 API 调用的代码吗?另外,如果可以,请发布 SiteA 和 SiteB 之间的差异。
  • Web 应用程序有一组 API,据我了解,它应该在部署时调用相应的虚拟路径。即,我的 webapp 的 api 很少,我首先加载了 SiteA,这些 api 调用对 SiteA 工作正常。然后我用同一个 webapp 中新发布的代码创建了另一个虚拟文件夹,我的 api 调用指向正确的路径,但它显示 404。这怎么可能是跨域调用?
  • 您能发布两个 API 调用示例吗?一个成功,一个失败。
  • 这不会是错的,因为在我的 ajax 调用中我使用了虚拟路径。对于 siteA:“Fold1/SiteA/api/Register/Get”和对于 siteB:“Fold2/SiteB/api/Register/Get” api 是同一网站的一部分。所以我猜应该可以单独调用。
  • 是的,他们应该这样做,但是如果没有任何附加信息,我对您帮助不大...您是否 100% 确定部署的网站是相同的(例如使用 WinMerge 比较两个文件夹),尤其是web.config 文件?

标签: asp.net iis iis-6


【解决方案1】:

在 IIS 中添加虚拟目录 Fold1。使 SiteA 和 SiteB '转换为应用程序'。

然后您可以访问:localhost/Fold1/SiteA 和 localhost/Fold1/SiteB

您提到的错误可能是您的 api 的 url 路径无效的原因。

【讨论】:

  • 路径正确,我想知道在同一个应用程序池的两个不同路径中部署同组dll是否会发生冲突
  • 嗯,很难说可能出了什么问题,而我看不出你是如何调用 api 的。但是如果dll有冲突,那么你可能会得到505。
  • @deepak 不,同一个池中的相同程序集没有冲突。网站在应用程序池中被隔离。应用程序池只是一个处理请求并将它们路由到适当应用程序的进程。但德米特里是对的,只要你不提供更多信息,我们帮不了你太多。
猜你喜欢
  • 2011-03-02
  • 1970-01-01
  • 2013-04-26
  • 2011-07-26
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多