Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF AddServiceReference导致自定义工具错误,不生成代理_C#_.net_Wcf_Visual Studio 2010_Serialization - Fatal编程技术网

C# WCF AddServiceReference导致自定义工具错误,不生成代理

C# WCF AddServiceReference导致自定义工具错误,不生成代理,c#,.net,wcf,visual-studio-2010,serialization,C#,.net,Wcf,Visual Studio 2010,Serialization,“添加服务引用”以及SvcUtil的所有特性都存在问题。 为了复制,只需添加带有参数的OperationContract或返回以下类: [XmlSchemaProvider("MySchema")] public class MyStructure : IXmlSerializable { private XmlElement e; private static void Func(object o, ValidationEventArgs args) { }

“添加服务引用”以及SvcUtil的所有特性都存在问题。 为了复制,只需添加带有参数的OperationContract或返回以下类:

[XmlSchemaProvider("MySchema")]
public class MyStructure : IXmlSerializable
{
    private XmlElement e;

    private static void Func(object o, ValidationEventArgs args)
    {
    }

    public static XmlQualifiedName MySchema(XmlSchemaSet xs)
    {
        //xs.XmlResolver = new XmlUrlResolver();             
        XmlSchema s = XmlSchema.Read(new XmlTextReader(new StringReader("<?xml version=\"1.0\"?><xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><xs:complexType name=\"MyStructure\"><xs:sequence><xs:any /></xs:sequence></xs:complexType></xs:schema>")), null);

        xs.Add(s);
        return new XmlQualifiedName("MyStructure");
    }

    #region IXmlSerializable Members

    public System.Xml.Schema.XmlSchema GetSchema()
    {
        throw new NotImplementedException();
    }

    public void ReadXml(XmlReader reader)
    {
       XmlDocument doc = new XmlDocument();
       e = (XmlElement)doc.ReadNode(reader);
    }

    public void WriteXml(XmlWriter writer)
    {
        e.WriteTo(writer);
    }

    #endregion
}
[XmlSchemaProvider(“MySchema”)]
公共类MyStructure:IXmlSerializable
{
私有元素e;
私有静态void Func(对象o,ValidationEventArgs args)
{
}
公共静态XmlQualifiedName MySchema(XmlSchemaSet xs)
{
//xs.XmlResolver=新的XmlUrlResolver();
XmlSchema s=XmlSchema.Read(新的XmlTextReader(新的StringReader)(“”),null);
xs.Add(s);
返回新的XmlQualifiedName(“MyStructure”);
}
#区域IXmlSerializable成员
public System.Xml.Schema.XmlSchema GetSchema()
{
抛出新的NotImplementedException();
}
公共void ReadXml(XmlReader)
{
XmlDocument doc=新的XmlDocument();
e=(XmlElement)doc.ReadNode(reader);
}
public void WriteXml(XmlWriter)
{
e、 书面(作者);
}
#端区
}
结果是,当您使用AddWebReference或AddSerivceReference而不引用包含MyStructure类型的类库时,一切都会很好,您将在自动创建的代理上获得xmlElement表示

但是,当您有参考时,您将收到以下警告:

================

警告1自定义工具警告:无法导入wsdl:portType 详细信息:运行WSDL导入扩展时引发异常:System.ServiceModel.Description.DataContractSerializerMessageCompactImporter 错误:命名空间“”中数据协定名称为“MyStructure”的引用类型“ServiceLibrary.MyStructure,ServiceLibrary,Version=1.0.0,Culture=neutral,PublicKeyToken=null”无法使用,因为它与导入的DataContract不匹配。需要从引用的类型中排除此类型。 XPath到错误源://wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='IService1']\Projects\WCFSample\WCFExample\testAddressReference\Service reference1\Reference.svcmap 1 testAddressReference

======================

不会为您生成任何代理

现在,当您有一个通用的DataContract和/或使用IsReference属性时,internet上已经充满了这方面的描述

这是一个非常严重的问题,因为任何非类型化的数据都会造成这个问题。
找不到任何解决问题的方法。如果我想通过共享合同类库来了解客户端的类型,该怎么办?

这种类型的异常通常意味着服务生成的合同类型与引用的类型(如消息所示!)至少存在一个差异。但我发现,乍一看可能并不明显。确保服务器上的所有嵌套和引用类型都是最新的。在我的例子中,服务器上更新了嵌套类型。我以为我已经通过本地引用的程序集(和共享引用类型)进行了更新,但我错过了一些。经过仔细检查才找到罪犯

请参阅

中的其他信息。我有一个建议:
我也有类似的错误,包括:

找不到.svcmap文件。它可能已被移动或删除。要生成新的.svcmap文件,请删除服务引用并再次添加它

此时,除非关闭VS2010并再次打开它,否则无法删除服务引用

情况是:我的WCF服务正在运行,我以编程方式在我定义的HTTP地址添加了一个
说明.ServiceMetadataBehavior

VS2010
中,我尝试在HTTP地址添加一个服务引用,我看到了我的服务,我添加了引用,瞧,错误和警告

问题:我的HTTP地址包含一些WCF不喜欢的关键字。特别是单词
COM
(它也与
LPT
断开)


因此我的解决方案:修改我的HTTP地址,使其不包含COM这个词。这对我很有用。

如果服务是通过HTTPS托管的,请进入服务器的IIS管理器。在站点的“SSL设置”下,确保选中了“需要SSL”,并选中客户端证书单选按钮中的“接受”。

我希望知道这个问题的答案。我现在正在与VS2010打一个几乎相同的问题。根据我的经验,多年来,WCF在svcutil.exe中生成适当的WSDL以供使用时一直不稳定且不可靠,令人失望的是,它在VS2010中还没有得到修复。微软没有人真正使用这项技术吗?因为我无法设置WCF服务而不遇到此问题或其他密切相关的问题。MICROSOFT请修复此问题!!!(或者我去Java)