mvc 比较新。我有一个我认为奇怪的架构项目,我在有人离开我的公司后继承了这个项目。有两个“服务层”。主层是一个 MVC 4 项目,它需要一个 REST 查询。下面是它的工作原理:
另一个项目中的 asp.net 页面允许用户输入 REST 查询。同一个 asp.net 页面使用输入的 REST 查询调用 serviceRequest.DownloadString。
这导致调用 mvc 4 项目中的 DelegatingHandler。这个 DelegatingHandler 对随请求发送的标头进行一些验证。如果数据正确,则 DelegatingHandler 使用传递给 DelegatingHandler 的相同 REST 查询调用 base.SendAsync。
这将激活 REST 查询调用的 mvc 4 项目中的控制器。如果它正在工作,mvc 4 项目将返回 xml。
4,为了完成大部分工作,控制器从 wcf 项目中调用方法。
正在发生的事情是,如果在 Visual Studio 中运行,该架构可以正常工作。如果将两个服务层(mvc 4 和 wcf 项目)部署到我本地计算机上的 IIS 应用程序,它也可以正常运行。
当服务层部署到两台单独的机器上时,就会出现问题,一台在 dmz 中,另一台在防火墙内的 macine 上。它返回 500。
我使用了 fiddler 并修复了一个与连接字符串有关的问题。完成后,我仍然得到 500,但没有其他信息。在这种情况下,再次运行 fiddler 只确认我收到了 500。我尝试过:
将跟踪代码放入两个服务层的配置中
使用 wcf 层中的现有函数将一些调试信息从控制器写入表中。
我意识到我可能没有在 mvc 和 wcf 配置文件中放入跟踪代码,但它似乎只是完全绕过了 mvc 4 项目。我还注意到一些关于能够使用 debug.write 的信息。这是一个可行的选择。
这两个步骤都没有让我更接近解决问题。我得到的印象是 mvc 4 代码根本没有被调用,并且在调用 serviceRequest.DownloadString 以调出 DelegatingHandler 时发生错误。但是我不知道在哪里看我是否正确。当代码离开asp.net页面并尝试进入mvc 4项目时,我可以使用代码(例如和事件)中的某个点来跟踪代码吗?
调试此问题的最佳方法是什么?任何帮助,将不胜感激。
谢谢,
无花果0000