VisualStudio2010で.asmxファイルの2つのサービス参照コントラクトを生成しています。
両方のサービス参照を同じ方法で作成しました。「サービス参照」->「サービス参照の追加」を右クリックします。「->「検出」->名前空間の名前変更->「OK」。
これは、適切に生成されたサービスのReferences.csから最も自動生成されたコードです。
namespace CableSolve.Web.Api.Tests.ComponentServicesProxy {
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(Namespace="http://www.cormant.com/cswebapi", ConfigurationName="ComponentServicesProxy.ComponentServicesSoap")]
public interface ComponentServicesSoap {
これは、不適切に生成されたサービスのコードです。
namespace CableSolve.Web.Api.Tests.WorkflowServicesProxy {
using System.Runtime.Serialization;
using System;
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="OrderDto", Namespace="http://www.cormant.com/cswebapi")]
[System.SerializableAttribute()]
public partial class OrderDto : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
WorkflowServicesProxyがSystem.Runtime.Serializationを使用しているのに対し、ComponentServicesProxyはSystem.ServiceModelを使用していることは明らかです。
System.Runtime.Serializationを使用して2番目のサービス参照が生成されるトリガーが何であるかわかりません。誰かがこれを引き起こす原因を知っていますか?私のOrderDtoクラスにはDataContractAttributeがありませんが、他の属性があります。
[Serializable]
[XmlRoot("Order"), SoapType("Order")]
public class OrderDto : IDto
このサービスリファレンスは、以前は適切にコードを生成していました。2つのビルド間でシフトしたようです。
私の両方のサービスの宣言は同じです:
[WebService(Namespace = "http://www.cormant.com/cswebapi")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class WorkflowServices : WebService
[WebService(Namespace = "http://www.cormant.com/cswebapi")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class ComponentServices : WebService
サービス参照構成は同じです。
更新:提案された答えを試しても成功しませんでしたが、いくつかの情報を学びました。asmxファイルからすべてのコードを削除してサービス参照を再生成すると、ServiceModelにスワップバックされます。したがって、コード自体に何かがあります。