2017-10-02 8 views
0

Ich mache einige Kursarbeit und bin sehr verwirrt, da der Kurs scheinbar die gleichen Namen für verschiedene Dinge verwendet.Web Service - SoapClient nicht in Assembly Referenz

Es erstellt einen Web-Service und dann verbraucht diese Anwendung es und zeigt das Ergebnis an.

Der Web-Dienst hat eine Methode namens MBCProductDetails() Die eigentliche Dienstverweis in der App wird es auch genannt MBCProductDetails

Dies ist der Code der Kurs gibt mir es zu konsumieren raubend -

Jetzt
private async void btnGetRates_Click(object sender, RoutedEventArgs e) 
{ 
    MBCProductDetails.MBCProductDetailsSoapClient serviceMBCProductDetails = new MBCProductDetails.MBCProductDetailsSoapClient(); 

    MBCProductDetails.GetProductDetailsResponse MBCProductDetailsResponse = await serviceMBCProductDetails.GetProductDetailsAsync(Convert.ToInt32(txtProductCode.Text)); 

    tbProductNameValue.Text = "Product: " + MBCProductDetailsResponse.Body.GetProductDetailsResult.ProductName; 
    tbInterestRateValue.Text = "Interest Rate: " + MBCProductDetailsResponse.Body.GetProductDetailsResult.InterestRate.ToString(); 
    tbAccountKeepingFeeValue.Text = "Account Fee: " + MBCProductDetailsResponse.Body.GetProductDetailsResult.AccountFee.ToString(); 

} 

Ich versuche, das selbst zu tun, aber wenn ich es tue, bekomme ich MBCProductDeatilsSoapClient does not exist in the namespace.

Könnte jemand mich durch genau ausführen, was hier vor sich geht, welche Namen wo und so gehen, weil Ich bin völlig verwirrt. Prost

Edit:

Dies ist der Code aus dem Web Service ist

public struct ProductDetails 
{ 
    public int ProductCode; 
    public string ProductName; 
    public double InterestRate; 
    public double AccountFee; 
} 

private ProductDetails Products; 

public MBCProductDetails() 
{ 
    Products.ProductCode = 0; 
    Products.ProductName = ""; 
    Products.InterestRate = 0; 
    Products.AccountFee = 0; 
} 

private void AssignValues(int ProductCode) 
{ 

    Products.ProductCode = ProductCode; 

    if (ProductCode == 1) 
    { 
     Products.ProductName = "Everyday Loan Account"; 
     Products.InterestRate = 4.5; 
     Products.AccountFee = 10; 
    } 
    else if (ProductCode == 2) 
    { 
     Products.ProductName = "Business Loan Account"; 
     Products.InterestRate = 3.5; 
     Products.AccountFee = 12; 
    } 
    else if (ProductCode == 3) 
    { 
     Products.ProductName = "Offset Loan Account"; 
     Products.InterestRate = 5.0; 
     Products.AccountFee = 15; 
    } 
    else 
    { 
     Products.ProductName = "Loan Account not found"; 
     Products.InterestRate = 0.0; 
     Products.AccountFee = 0; 
    } 
} 

[WebMethod(Description = "This method call will get the product name, interest rate and the account fee for a given product code.", EnableSession = false)] 
public ProductDetails GetProductDetails(int ProductCode) 
{ 
    AssignValues(ProductCode); 
    ProductDetails RequestedProductDetails = new ProductDetails(); 
    RequestedProductDetails.ProductCode = Products.ProductCode; 
    RequestedProductDetails.ProductName = Products.ProductName; 
    RequestedProductDetails.InterestRate = Products.InterestRate; 
    RequestedProductDetails.AccountFee = Products.AccountFee; 
    return RequestedProductDetails; 
} 
+1

Was sind MBCProductDetails? – lindexi

+0

@lindexi In diesem Fall ist es der Name der Methode im Web Service selbst und auch der Name der Web-Referenz.Ich werde den anderen obigen Code für Sie hinzufügen. – Rick1990

Antwort

0

Der Web-Dienst eine Methode namens MBCProductDetails()

Im Inneren des Webservice, die MBCProductDetails() hier sollte die Constructor Methode für MBCProductDetails Class.So sollte die Web-Service-Klasse sein MBCProductDetails, die komplette Struktur für Web-Service sollte wie sein folgt:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.ComponentModel.ToolboxItem(false)] 
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService] 
public class MBCProductDetails : System.Web.Services.WebService 
{ 
    [WebMethod(Description = "This method call will get the product name, interest rate and the account fee for a given product code.", EnableSession = false)] 
    public ProductDetails GetProductDetails(int ProductCode) 
    { 
    ... 
    } 
    public MBCProductDetails() 
    { 
    ... 
    } 
    public struct ProductDetails 
    { 
     ... 
    } 
    private ProductDetails Products; 
    private void AssignValues(int ProductCode) 
    { 
    ... 
    } 
} 

Jetzt versuche ich, dies selbst zu tun, aber wenn ich mich tun bekommen MBCProductDeatilsSoapClient im Namensraum existiert nicht.

Auf der UWP Client-Seite, für die Code-Zeile MBCProductDetails.MBCProductDetailsSoapClient, hier die MBCProductDetails sollte der Namensraum des Dienstes mit Zusatz Bezug. Standardmäßig ist der Namespace ServiceReference1, wenn Sie das obige Client-Code-Snippet verwenden möchten, müssen Sie es in MBCProductDetails umbenennen, wie in der folgenden Abbildung gezeigt, andernfalls erhalten Sie die Ausnahme "does not exists", da kein Service-Referenz-Namespace benannt ist MBCProductDetails. enter image description here

Vergewissern Sie sich, dass Sie innerhalb des verbundenen Dienstes MBCProductDetails haben, nachdem die Servicereferenz hinzugefügt wurde.

enter image description here

Das Testergebnis ist auf meiner Seite:

enter image description here

Zusätzlich empfehle ich Ihnen WCF-Dienst statt, da "ASP.NET Web Services" (auch bekannt als ASMX) ist ein Vermächtnis zu verwenden Technologie. Einzelheiten, auf die Sie sich beziehen können this thread.

Verwandte Themen