0

私は(basicHttpBindingを使用して)wcfに移行したASMXサービスを持っていましたが、現在は古いクライアント(whcihはwsdl.exeを使用してプロキシを生成します)を使用してサービスをヒットしています。呼び出しがサービスに到達し、サービスがnull以外のオブジェクトを返すことがわかりますが、asmxクライアントが受け取る戻り値はnullです。

これが発生する可能性がある理由と、これをさらにデバッグする方法についての手がかりはありますか?

  // This is my webservice 

   [ServiceContract(Namespace = "http://tempuri.org/ManagementWebService")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class ManagementService
    {
        [OperationContractAttribute(Action = "http://tempuri.org/ManagementWebService/GetViewSummaryForCurrentUser", ReplyAction = "*")]
        [OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
        [XmlSerializerFormatAttribute()]
        [CLSCompliant(false)]
        [WebMethod]
        public virtual ViewSummaryList GetViewSummaryForCurrentUser()
        {
            return new ViewSummaryList();
        }
}


// This is the client side code which receives a null value.
    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/ManagementWebService/GetVi" +
            "ewSummaryForCurrentUser", RequestNamespace="http://tempuri.org/ManagementWebService", ResponseNamespace="http://tempuri.org/ManagementWebService", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        [return: System.Xml.Serialization.XmlElementAttribute("Views")]
        public ViewSummaryList GetViewSummaryForCurrentUser() {
            object[] results = this.Invoke("GetViewSummaryForCurrentUser", new object[0]);
            return ((ViewSummaryList)(results[0]));
        }
4

1 に答える 1

0

それを理解した、基本的に石鹸の応答が誤って生成されていました

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetViewSummaryForCurrentUserResponse xmlns="http://tempuri.org/ManagementWebService"><GetViewSummaryForCurrentUserResult/></GetViewSummaryForCurrentUserResponse></s:Body></s:Envelope>

それ以外の

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetViewSummaryForCurrentUserResponse xmlns="http://tempuri.org/ManagementWebService"><Views /></GetViewSummaryForCurrentUserResponse></soap:Body></soap:Envelope>

違いは、ビューの代わりに追加の GetViewSummaryForCurrentUserResult 要素であることに注意してください。これを修正するには、属性を追加する必要がありました

        [return: System.ServiceModel.MessageParameterAttribute(Name = "Views")]
public virtual ViewSummaryList GetViewSummaryForCurrentUser()

....本当に些細な解決策です。なぜ私が見逃したのかわかりません

于 2012-11-21T06:26:45.470 に答える