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" />

posted @ 2019-04-10 12:00  becket  阅读(2625)  评论(0编辑  收藏  举报