所以,我一直在玩ASP.net MVC4和新的WebAPI过去几天。在开始一个新应用程序时,我总是会做的第一件事是将<trust level="Medium" />
放入我的Web.config中,这样我就可以确定我的应用程序可以在大多数主机上运行。ASP.net MVC4 WebAPI JSON中信任
通常,如果我使用股票微软的东西一切正常,没有问题。但今晚我在Brad Wilson的Webstack of Love presentation之后遇到问题。我所有的AJAX调用都返回一个Server 500错误。但是,当我直接在浏览器中打开WebAPI时,它将以XML格式返回所有内容。
因此,我认为使用WebAPI控制器序列化为JSON是导致问题的原因。 我的问题是如何解决这个问题?
微软教导共享主机安全地开展工作并将其锁定到中等信任度,然后创建在中等信任度下无法使用的新Web技术。当它是最终版本并且二进制文件安装在GAC中时,也许一切都会好起来的?共享主机可能需要几个月才能升级到最新,最好的版本。
这似乎是最大的问题通常是反射-90%以上的东西我尝试过,不会在中等信任上运行是由于这个(例如,我喜欢用AutoMapper代替手编码ViewModel =>实体映射)。有没有办法将反射限制到应用程序中的程序集,以便它可以成为中等信任功能集的一部分,并使此问题成为过去?
当我发现Application_Error事件甚至没有在我的Global.asax中触发时,我在IIS上设置了失败的请求跟踪。这是抛出的异常。不知道如何获得更多的细节。
Warning -MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 500
HttpReason Internal Server Error
HttpSubStatus 0
ErrorCode 0
ConfigExceptionInfo
Notification EXECUTE_REQUEST_HANDLER
ErrorCode The operation completed successfully. (0x0)
链接sample project displaying the issue。也包含在“测试”目录下的是我的提琴手测试的截图:XML-fiddle.png & JSON-fiddle.png。
我没有做到SignalR,它不包含在我的项目中。它仅在返回JSON(通过jQuery或带JSON的Fiddler)返回Medium Trust时发生。将尝试你详细的错误方法,看看我能否获得更多的细节。 – Sam 2012-07-30 02:20:41
尝试了您提到的提示,但没有提供任何其他信息。将VS2010与嵌入式Web服务器一起使用时,WebAPI将引发500内部服务器错误,并且响应中没有包含其他信息(使用Fiddler)。 – Sam 2012-07-30 11:12:17
我试过IIS以确保它不是卡西尼的东西。再次,具有JSON结果的WebAPI在完全信任下工作,但是当我切换到中等信任,500内部服务器错误时。在两种情况下都可以使用XML结果的WebAPI。我无法从应用程序获得任何额外的错误信息(不解雇Application_Error),所以我启用IIS失败的请求跟踪。用这些信息更新了我的问题。 – Sam 2012-07-30 14:25:48