2017-10-02 14 views
0

나는 코스에서 다른 것들과 겉으로는 같은 이름을 사용하기 때문에 약간의 코스 작업을하고 있으며 매우 혼란 스럽다.웹 서비스 - 어셈블리 참조가없는 SoapClient

웹 서비스를 만든 다음이 응용 프로그램에서 웹 서비스를 생성하고 결과를 표시합니다.

웹 서비스라는 방법이있다 MBCProductDetails()을 소비하는 응용 프로그램의 실제 서비스 참조라고도 MBCProductDetails

이 코스는 소비 나에게주는 코드입니다 -

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(); 

} 

을 지금 나는 나 자신을하려고 노력하고있다. 그러나 내가 내가 할 때 MBCProductDeatilsSoapClient does not exist in the namespace.

아무도 정확하게 여기에서 계속하고있는 것을 통하여 나를 실행할 수 있었다. 나는 완전히 혼란 스럽다. 건배

편집 :이 웹 서비스 내부 웹 서비스

웹 서비스 메서드 호출 한
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

MBCProductDetails 란 무엇입니까? – lindexi

+0

@lindexi이 경우 웹 서비스 자체의 메소드 이름이며 웹 참조 이름입니다.위의 다른 코드를 추가합니다. – Rick1990

답변

0

MBCProductDetails()

의 코드입니다

MBCProductDetails() 여기 MBCProductDetails 클래스의 Constructor 메소드 여야합니다. 따라서 웹 서비스 클래스는

[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) 
    { 
    ... 
    } 
} 

는 지금이 나 자신을하려고하지만 그렇게되면 난 MBCProductDeatilsSoapClient 네임 스페이스에 존재하지 않는 수 : MBCProductDetails는 같아야 웹 서비스에 대한 전체 구조체는 다음과 같다. 코드 라인 MBCProductDetails.MBCProductDetailsSoapClient의 UWP 클라이언트 측에서

는 여기 MBCProductDetails 추가 된 서비스 참조의 네임 스페이스해야한다. 기본적으로 네임 스페이스는 ServiceReference1입니다. 위의 클라이언트 코드 스 니펫을 사용하려면 다음 그림과 같이 MBCProductDetails으로 이름을 바꿔야합니다. 그렇지 않으면 서비스 참조 네임 스페이스가 없기 때문에 "존재하지 않습니다"예외가 발생합니다 MBCProductDetails. enter image description here

서비스 참조가 추가 된 후에 연결된 서비스 내에 MBCProductDetails이 있는지 확인하십시오.

enter image description here

내 옆에 검사 결과 :

또한 enter image description here

, 당신이 대신 "ASP.NET 웹 서비스"(일명 ASMX) 이후 WCF 서비스를 사용하는 것이 좋습니다는 유산이다 과학 기술. this thread을 참조 할 수있는 세부 정보.