https://bugzilla.novell.com/show_bug.cgi?id=664813
https://bugzilla.novell.com/show_bug.cgi?id=664813#c0 Summary: System.Web.Mvc.JsonResult.ExecuteResult no longer works, exception is thrown at System.Web.Script.Serialization.JavaScriptSerializer.. ctor when application is compiled with dmcs (but still works with gmcs) Classification: Mono Product: Mono: Class Libraries Version: SVN Platform: x86 OS/Version: Linux Status: NEW Severity: Normal Priority: P5 - None Component: Sys.Web AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 Version: Git e9267b1f2166f2b6bcdd74841700a35a9749da88 OS: Debian Squeeze ASP.NET MVC applications that return JSON from controller actions appear to have been broken by a semi-recent commit; Mono compiled from Git around October 2010 used to work. The following is displayed by actions that return JsonResult: ------------------------------------------------------------------------------ Server Error in '/' Application Cannot cast from source type to destination type. Description: HTTP 500. Error processing request. Stack Trace: System.InvalidCastException: Cannot cast from source type to destination type. at System.Web.Script.Serialization.JavaScriptSerializer..ctor (System.Web.Script.Serialization.JavaScriptTypeResolver resolver, Boolean registerConverters) [0x00000] in <filename unknown>:0 at System.Web.Script.Serialization.JavaScriptSerializer..cctor () [0x00000] in <filename unknown>:0 Version information: Mono Runtime Version: 2.11 (master/c855584 Sun Jan 16 01:42:24 EET 2011); ASP.NET Version: 4.0.30319.1 ------------------------------------------------------------------------------ An example that does not require a full ASP.NET application is provided below. It works with mcs, gmcs but not dmcs (my ASP.NET application uses xsp4). Reproducible: Always Steps to Reproduce: [mono] /tmp/bugtest @ cat test.cs using System; using System.IO; using System.Text; using System.Web; using System.Web.Mvc; class Program { static void Main() { var obj = new { Foo = "1", Bar = 2 }; var jsonResult = new JsonResult(); jsonResult.Data = obj; jsonResult.ContentType = "application/json"; jsonResult.ContentEncoding = Encoding.ASCII; jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet; var httpRequest = new HttpRequest("test.aspx", "http://localhost/test.aspx", ""); var httpResponseWriter = new StringWriter(); var httpResponse = new HttpResponse(httpResponseWriter); var httpContext = new HttpContext(httpRequest, httpResponse); var httpContextWrapper = new HttpContextWrapper(httpContext); var controllerContext = new ControllerContext(); controllerContext.HttpContext = httpContextWrapper; jsonResult.ExecuteResult(controllerContext); Console.WriteLine(httpResponseWriter.ToString()); } } [mono] /tmp/bugtest @ gmcs -r:System.Web -r:System.Web.Mvc -r:System.Web.Abstractions test.cs && mono test.exe {"Foo":"1","Bar":2} [mono] /tmp/bugtest @ dmcs -r:System.Web -r:System.Web.Mvc -r:System.Web.Abstractions test.cs && mono test.exe Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for System.Web.Script.Serialization.JavaScriptSerializer ---> System.InvalidCastException: Cannot cast from source type to destination type. at System.Web.Script.Serialization.JavaScriptSerializer..ctor (System.Web.Script.Serialization.JavaScriptTypeResolver resolver, Boolean registerConverters) [0x00000] in <filename unknown>:0 at System.Web.Script.Serialization.JavaScriptSerializer..cctor () [0x00000] in <filename unknown>:0 --- End of inner exception stack trace --- at System.Web.Mvc.JsonResult.ExecuteResult (System.Web.Mvc.ControllerContext context) [0x00000] in <filename unknown>:0 at Program.Main () [0x00000] in <filename unknown>:0 Actual Results: Exception is thrown when application is compiled by dmcs. Expected Results: No exception is thrown. ASP.NET MVC applications could use JavaScriptSerializer manually and return ContentResult as a workaround, but this requires extensive changes to the applicaiton. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
