0

mvc 比较新。我有一个我认为奇怪的架构项目,我在有人离开我的公司后继承了这个项目。有两个“服务层”。主层是一个 MVC 4 项目,它需要一个 REST 查询。下面是它的工作原理:

  1. 另一个项目中的 asp.net 页面允许用户输入 REST 查询。同一个 asp.net 页面使用输入的 REST 查询调用 serviceRequest.DownloadString。

  2. 这导致调用 mvc 4 项目中的 DelegatingHandler。这个 DelegatingHandler 对随请求发送的标头进行一些验证。如果数据正确,则 DelegatingHandler 使用传递给 DelegatingHandler 的相同 REST 查询调用 base.SendAsync。

  3. 这将激活 REST 查询调用的 mvc 4 项目中的控制器。如果它正在工作,mvc 4 项目将返回 xml。

4,为了完成大部分工作,控制器从 wcf 项目中调用方法。

正在发生的事情是,如果在 Visual Studio 中运行,该架构可以正常工作。如果将两个服务层(mvc 4 和 wcf 项目)部署到我本地计算机上的 IIS 应用程序,它也可以正常运行。

当服务层部署到两台单独的机器上时,就会出现问题,一台在 dmz 中,另一台在防火墙内的 macine 上。它返回 500。

我使用了 fiddler 并修复了一个与连接字符串有关的问题。完成后,我仍然得到 500,但没有其他信息。在这种情况下,再次运行 fiddler 只确认我收到了 500。我尝试过:

  1. 将跟踪代码放入两个服务层的配置中

  2. 使用 wcf 层中的现有函数将一些调试信息从控制器写入表中。

我意识到我可能没有在 mvc 和 wcf 配置文件中放入跟踪代码,但它似乎只是完全绕过了 mvc 4 项目。我还注意到一些关于能够使用 debug.write 的信息。这是一个可行的选择。

这两个步骤都没有让我更接近解决问题。我得到的印象是 mvc 4 代码根本没有被调用,并且在调用 serviceRequest.DownloadString 以调出 DelegatingHandler 时发生错误。但是我不知道在哪里看我是否正确。当代码离开asp.net页面并尝试进入mvc 4项目时,我可以使用代码(例如和事件)中的某个点来跟踪代码吗?

调试此问题的最佳方法是什么?任何帮助,将不胜感激。

谢谢,

无花果0000

4

1 回答 1

0

我不太确定,但看起来返回的错误没有显示,因为您没有在 localhost 上运行。错误可能是某些配置文件错误或实际上是什么。

您是否可以尝试隔离运行应用程序(也许在每个中创建一个虚拟方法,如果可行,请进行内部调用(假/模拟),以便您可以看到实际问题是什么。

或者您可以尝试让 mvc 即使在远程也显示所有错误。您可以在 web.config 上执行此操作:

<customErrors mode="Off">
</customErrors>
于 2013-10-23T15:56:37.693 回答