最近项目需要在 CentOS 7.0 上部署asp.net开发的MVC微信公众号网站,已经安装好了mono和jexus环境,其他功能都正常,但是用HttpWebRequest请求微信公众号接口,类型加载异常错误:System.TypeLoadException: Failure has occurred while loading a type. at
System.TypeLoadException: Failure has occurred while loading a type. at WeiXinAPI.AccessToken.GetAccessToken (System.DateTime now) [0x00190] in <213a3df58a7d4d84a4f34f4158208241>:0 at newsasker.wx.Controllers.wxController.test () [0x00040] in :0
代码部分是这样的:
1 //第一种请求方式 2 public static string GetByHttpWebRequest(string url, string contentType = "application/x-www-form-urlencoded", CookieCollection cookies = null, string accept = "*/*") 3 { 4 string responseString; 5 HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); 6 webRequest.Method = "GET"; 7 if (!string.IsNullOrWhiteSpace(contentType)) 8 { 9 webRequest.ContentType = contentType; 10 } 11 if (cookies != null) 12 { 13 webRequest.CookieContainer = new CookieContainer(); 14 webRequest.CookieContainer.Add(cookies); 15 } 16 webRequest.Accept = accept; 17 //webRequest.AllowAutoRedirect = true; 18 //webRequest.Method = "GET"; 19 //webRequest.ContentType = "application/x-www-form-urlencoded"; 20 using (WebResponse response = webRequest.GetResponse() as HttpWebResponse) 21 { 22 using (Stream stream = response.GetResponseStream()) 23 { 24 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) 25 { 26 responseString = reader.ReadToEnd(); 27 } 28 } 29 } 30 return responseString; 31 } 32 33 34 //第二种请求方式 35 public static string GetByWebClient(string address) 36 { 37 WebClient wc = new WebClient(); 38 using (Stream st = wc.OpenRead(address)) 39 { 40 using (StreamReader sr = new StreamReader(st, Encoding.UTF8)) 41 { 42 string res = sr.ReadToEnd(); 43 sr.Close(); 44 st.Close(); 45 return res; 46 } 47 } 48 } 49 50 //第三种请求方式 51 public static string GetByWebRequest(string Url, string Encode = "utf-8") 52 { 53 WebRequest request = WebRequest.Create(Url); 54 WebResponse response = request.GetResponse(); 55 Stream respStream = response.GetResponseStream(); 56 using (StreamReader reader = new StreamReader(respStream, Encoding.GetEncoding(Encode))) 57 { 58 return reader.ReadToEnd(); 59 } 60 }
我个人的直觉这是一个mono的异常 你可以从张善友的博客上找到相关的做法。
我建议你 先运行一个 winform的程序测试下mono是否安装部署成功
尝试一下红字部分
http://www.cnblogs.com/shanyou/archive/2012/01/07/2315982.html