相对较新的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中,另一台在防火墙内的一台机器上。它返回500。
我使用了fiddler并修复了一个与连接字符串有关的问题。一旦完成,我仍然得到500,但没有其他信息。在这种情况下再次运行提琴手只确认我收到了500.我试过了:
将跟踪代码放在两个服务层的配置中
使用wcf层中的现有函数将一些调试信息从控制器写入表。
我意识到我可能没有在mvc和wcf配置文件中添加跟踪代码,但它似乎只是简单地绕过了mvc 4项目。我还注意到有关能够使用debug.write的一些信息。这是一个可行的选择。
这两个步骤都没有让我更接近解决问题。我得到的印象是,mvc 4代码永远不会被调用,并且在调用serviceRequest.DownloadString以调出DelegatingHandler时会发生错误。但是,我不知道在哪里看我是否正确。代码(例如事件)中是否有一个位置可以用来跟随代码离开asp.net页面并尝试转到mvc 4项目?
调试此方法的最佳方法是什么?任何帮助将不胜感激。
谢谢,
Fig0000
答案 0 :(得分:0)
我不太确定,但看起来没有显示返回的错误,因为您没有在localhost上运行。错误可能是某些配置文件错误或实际上是什么。
你可以尝试运行隔离的应用程序(也许在每个中创建一个虚拟方法,如果可行的话,进行内部调用(假/模拟),这样你就可以看到实际问题是什么。
OR 您可以尝试让mvc即使在远程也显示所有错误。您可以在web.config上执行此操作:
<customErrors mode="Off">
</customErrors>