所以,过去几天我一直在使用 ASP.net MVC4 和新的 WebAPI。启动新应用程序时,我总是做的第一件事就是将<trust level="Medium" />
其放入我的 Web.config 中,这样我就可以确定我的应用程序将在大多数主机上运行。
通常,如果我使用微软的股票,一切都没有问题。但是今晚我在关注 Brad Wilson 的Webstack of Love 演示时遇到了问题。我所有的 AJAX 调用都返回了 Server 500 错误。但是,当我直接在浏览器中点击 WebAPI 时,它会以 XML 格式返回所有内容。
所以我假设使用 WebAPI 控制器对 JSON 进行序列化是导致问题的原因。我的问题是如何解决这个问题?
让我感到困扰的是,微软教导共享主机要安全,并将事情锁定到中等信任,然后创建在中等信任中不起作用的新 Web 技术。当它是最终版本并且二进制文件安装在 GAC 中时,也许一切都会好起来的?共享主机可能需要几个月的时间才能升级到最新最好的版本。
似乎最大的问题通常是反射--90%+ 我尝试过的东西不能在中等信任上运行是由于这个原因(例如,我喜欢使用 AutoMapper 而不是手动编码 ViewModel => 实体映射)。有没有办法将反射限制在应用程序内的程序集中,以便它可以成为中等信任功能集的一部分并使这个问题成为过去?
当我发现我的 Global.asax 中甚至没有触发 Application_Error 事件时,我在 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)
链接到显示问题的示例项目。基本“测试”目录中还包含我的提琴手测试的屏幕截图:XML-fiddle.png 和 JSON-fiddle.png。