Visual Studios C# クラス ライブラリ (A5Lib) と WCF サービス プロジェクト (A5Services) があります。A5Services プロジェクトは A5Lib を参照し、Web サービス関数は A5Lib で作成されたクラスを (引数/戻りオブジェクトとして) 使用します。
私の ASP Web プロジェクトでも A5Lib のクラスを利用する予定なので、これらのオブジェクトを Web サービスに移動したくありません。
問題は、A5Services を実行しようとすると、次のエラーが発生することです。
エラー: http://localhost:16344/UserServices.svcからメタデータを取得できませんこれがアクセス権のある Windows (R) Communication Foundation サービスである場合は、指定されたアドレスでのメタデータ公開が有効になっていることを確認してください。メタデータの公開を有効にする方法については、http: //go.microsoft.com/fwlink/ ?LinkId=65455.WS-Metadata Exchange エラー URI: http://localhost:16344/UserServices.svc メタデータに含まれる MSDN ドキュメントを参照してください。解決できない参照: 'http://localhost:16344/UserServices.svc'。コンテンツ タイプ application/soap+xml; charset=utf-8 はサービスhttp://localhost:16344/UserServices.svcでサポートされていませんでした. クライアントとサービスのバインディングが一致していない可能性があります。リモート サーバーがエラーを返しました: (415) サポートされていないメディア タイプ.HTTP GET エラー URI: http://localhost:16344/UserServices.svc 「http://localhost:16344/UserServices.svc」のダウンロード中にエラーが発生しました。リクエストは次のエラー メッセージで失敗しました:--#content{ FONT-SIZE: 0.7em; PADDING-BOTTOM: 2em; MARGIN-LEFT: 30px}BODY{MARGIN-TOP: 0px; マージン左: 0px; 色: #000000; FONT-FAMILY: Verdana; Background-COLOR: 白}P{MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px; 色: #000000; FONT-FAMILY: Verdana}PRE{BORDER-RIGHT: #f0f0e0 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #f0f0e0 1px ソリッド; マージントップ: -5px; PADDING-LEFT: 5px; フォントサイズ: 1.2em; PADDING-BOTTOM: 5px; BORDER-LEFT: #f0f0e0 1px ソリッド; パディングトップ: 5px; BORDER-BOTTOM: #f0f0e0 1px ソリッド; FONT-FAMILY: Courier New; 背景色: #e5e5cc}.heading1{MARGIN-TOP: 0px; PADDING-LEFT: 15px; FONT-Weight: 通常; フォントサイズ: 26px; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 3px; MARGIN-LEFT: -30px; 幅: 100%; 色: #ffffff; パディングトップ: 10px; FONT-FAMILY: タホマ; Background-COLOR: #003366}.intro{MARGIN-LEFT: -15px}ServiceService
サービスでエラーが発生しました。ExceptionDetail (IncludeExceptionDetailInFaults=true によって作成される可能性が高い) の値は次のとおりです。----> System.Runtime.Serialization.InvalidDataContractException: タイプ 'A5Lib.Appliance' をシリアル化できません。これを DataContractAttribute 属性でマークし、シリアル化するすべてのメンバーを DataMemberAttribute 属性でマークすることを検討してください。型がコレクションの場合は、CollectionDataContractAttribute でマークすることを検討してください。サポートされているその他の型については、Microsoft .NET Framework のドキュメントを参照してください。System.Runtime.Serialization.DataContract.DataContractCriticalHelper.ThrowInvalidDataContractException (文字列メッセージ、型の種類) で System.Runtime.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract (Int32 id、RuntimeTypeHandle typeHandle、型の型) で System.Runtime.Serialization.DataContract で。 DataContractCriticalHelper.GetDataContractSkipValidation(Int32 id,
これが私がそこから引き出したものです:
タイプ 'A5Lib.Appliance' をシリアル化できません。これを DataContractAttribute 属性でマークし、シリアル化するすべてのメンバーを DataMemberAttribute 属性でマークすることを検討してください。型がコレクションの場合は、CollectionDataContractAttribute でマークすることを検討してください。
Visual Studio では、A5Lib のクラス/データ メンバー (コンパイル エラー) をそれらの属性でマークすることはできません (System.Runtime.Serialization を使用していても)。何か理由は?