WCF访问故障,请考虑使用 DataContractResolver(如果你正在使用 DataContractSerializer),或将任何未知类型以静态方式添加到已知类型的列表
问:请考虑使用 DataContractResolver(如果你正在使用 DataContractSerializer),或将任何未知类型以静态方式添加到已知类型的列表
解决:
DataContract和DataMember
using System.Runtime.Serialization; namespace Test { [DataContract] public class LoginRequest { [DataMember(Name = "username")] public string UserName { get; set; } [DataMember(Name = "password")] public string Password { get; set; } } }
JsonProperty
using Newtonsoft.Json; namespace Test { public class LoginRequest { [JsonProperty("username")] public string UserName { get; set; } [JsonProperty("password")] public string Password { get; set; } } }
问:[DataContract] [DataMember] 缺少程序集引用
解决:项目-》右键-》添加引用-》找到System.Runtime.Serialization 添加之
问:webapi “ObjectContent`1”类型未能序列化内容类型“application/xml; charset=utf-8”的响应正文。
解决:GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
问:跨域问题解决方案
Access to XMLHttpRequest at 'http://localhost:3232/api/User/GetData' from origin 'http://localhost:3333' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.
解决:
解决方案:
1、如果跨域请求发生在相同一级域名不同二级域名之间
例如:a.baidu.com 和 b.baidu.com
跨域直接在邀请求的接口页面中强制设置域为一级域 document.domain = "baidu.com";
2、设置接口允许ajax跨域访问
在服务器aspx页面头文件里加:
<meta http-equiv="Access-Control-Allow-Origin" content="*" />
在web.config文件中的 system.webServer 节点下 增加如下配置
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/> <add name="Access-Control-Allow-Headers" value="x-requested-with"/> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol> </system.webServer>
在jquery发起ajax之前,加入代码 jQuery.support.cors = true;
例如
问:无法读取配置节“entityFramework”,因为它缺少节声明(如果遇到无法读取配置节“unity”,因为它缺少节声明,解决办法一样)
解决
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
问:类型的异常在 Microsoft.Practices.ServiceLocation.dll 中发生
解决:在Global.asax里面
protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); var container = new UnityContainer(); UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); section.Containers.Default.Configure(container); ServiceLocator.SetLocatorProvider(() => new UnityServiceLocator(container)); }
点击windows键+R键
然后输入cmd
然后再跳出来的窗口里输入
netsh firewall show portopening
可以看到打开的所有端口
问:
解决:<meta name="referrer" content="no-referrer" />