0

このエラーが発生しています:

ProtoOperationBehavior に Model インスタンスが割り当てられていません

Visual Studio で WCF テンプレート アプリケーションを使用して、実行できるかどうかを確認しました。このエラーを修正するにはどうすればよいですか?

コード

public class Service1 : IService1
{
    public string GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }

    public CompositeType GetDataUsingDataContract(CompositeType composite)
    {
        if (composite == null)
        {
            throw new ArgumentNullException("composite");
        }
        if (composite.BoolValue)
        {
            composite.StringValue += "Suffix";
        }
        return composite;
    }
}

[ServiceContract]
public interface IService1
{

    [OperationContract]
    [ProtoBehavior()]
    string GetData(int value);

    [OperationContract]
    [ProtoBehavior()]
    CompositeType GetDataUsingDataContract(CompositeType composite);
}


[DataContract]
[ProtoBuf.ProtoContract]
public class CompositeType
{
    bool boolValue = true;
    string stringValue = "Hello ";

    [DataMember(Order = 1)]
    [ProtoBuf.ProtoMember(1)]
    public bool BoolValue
    {
        get { return boolValue; }
        set { boolValue = value; }
    }

    [DataMember(Order = 2)]
    [ProtoBuf.ProtoMember(2)]
    public string StringValue
    {
        get { return stringValue; }
        set { stringValue = value; }
    }
}

app.config:

<services> 
<service name="ProtoBufService.Service1"> 
    <host> 
        <baseAddresses> 
            <add baseAddress="net.tcp://localhost:9086/ProtoBufService/Service1/" />
        </baseAddresses>
    </host> 
    <endpoint address="basic" 
        binding="netTcpBinding" contract="ProtoBufService.IService1" 
        behaviorConfiguration="protoEndpointBehavior">         
    </endpoint> 
    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>     
</service> 
</services>
<extensions> 
    <behaviorExtensions> 
         <add name="protobuf" 
            type="ProtoBuf.ServiceModel.ProtoBehaviorExtension, 
            protobuf-net, Version=2.0.0.640, 
            Culture=neutral, PublicKeyToken=257b51d87d2e4d67" />     
     </behaviorExtensions> 
</extensions>

<endpointBehaviors>
    <behavior name="protoEndpointBehavior">
        <protobuf />
    </behavior>
</endpointBehaviors>
4

1 に答える 1

0

ナゲットを使ってみました。それはうまくいきませんでした。

どんなお悩みをお持ちだったのか、詳しくお聞きしたいです

次に、Google コード バージョン (コア、net30 アセンブリ) を使用しようとしましたが、同じエラーが発生しました。

「コアのみ」のライブラリには、メタプログラミング層が含まれていません。これは、事前に生成されたシリアル化アセンブリで使用するように設計されています。そのため、デフォルトのモデルはありません。常に提供する必要があります。

ここでの最も簡単な「修正」は、単にライブラリの「完全な」ビルドを使用することです。これには、デフォルトのモデルとしてメタプログラミング モデルがあります。

于 2013-06-19T22:37:02.610 に答える