簡體   English   中英

ASP.Net XML Web服務屬性返回空值

[英]ASP.Net xml web service properties returning null value

我的Web服務器上有一個傳統的Xml Web服務,它的服務名為Main Service.Class概述如下。

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
    // [System.Web.Script.Services.ScriptService]
public class MainService : System.Web.Services.WebService
{


    private byte[] symmetricKey;
    private byte[] symmetricIv;

    public byte[] SymmetricKey
    {

        get { return symmetricKey; }
        set { symmetricKey = value; }
    }
    public byte[] SymmetricIv
    {
        get { return symmetricIv; }
        set { symmetricIv = value; }
    }

    //Constructor

    public MainService()
    {
        this.GetDatabaseInstance();
    }

//Some Web Methods Heare to create the Symmetric Key
}

在我的客戶中,我有一種方法可以進行以下連接

MainService mainService=new MainsService();

//Calling to Some web method to create symmetric keys and assign those properties

//Now trying to access those properties

var key=mainService.SymmetricKey;

訪問變量“ key”時獲得空值。但是我調試了Web服務類。 私有變量正在獲取值。為什么值未出現在客戶端代碼上?屬性可能是在設置引用時未設置值?因為我可以通過Web方法返回OUT變量來訪問變量值? 有人可以解釋一下答案嗎?

以下方法是創建密鑰的Web方法

    [WebMethod]
    //create a symmetric key and encript it using clients public key and return values
    public bool CreateKeys(byte[] exponent, byte[] modulus)
    {
        try
        {
            //Create a new instance of the RSACryptoServiceProvider class.
            var rsaCryptoServiceProvider = new RSACryptoServiceProvider();

            //Create a new instance of the RSAParameters structure.
            RSAParameters rsaKeyInfo = new RSAParameters();

            //Set RSAKeyInfo to the public key values. 
            rsaKeyInfo.Modulus = modulus;
            rsaKeyInfo.Exponent = exponent;

            //Import key parameters into RSA.
            rsaCryptoServiceProvider.ImportParameters(rsaKeyInfo);

            //Create a new instance of the RijndaelManaged class.
            var rijndaelManaged = new RijndaelManaged();
            rijndaelManaged.GenerateKey();
            rijndaelManaged.GenerateIV();

            //save  the symmetric key and IV
            SymmetricKey = rijndaelManaged.Key;
            SymmetricIv = rijndaelManaged.IV;

            //Encrypt the symmetric key and IV.
            encryptedSymmetricKey = rsaCryptoServiceProvider.Encrypt(rijndaelManaged.Key, false);
            encryptedSymmetricIv = rsaCryptoServiceProvider.Encrypt(rijndaelManaged.IV, false);

            return true;
        }
        catch (Exception)
        {
            throw;
        }
    }

在客戶端代碼中,您使用的是var key=mainService.symmetricKey;

但是symmetricKey是私有byte[] ,無法在其包含類型之外進行訪問。 因此,您必須像這樣使用public property SymmetricKey

var key=mainService.SymmetricKey;

更新:

我懷疑引起問題的那條線一定是這個

        SymmetricKey = rijndaelManaged.Key;

CreateKeys方法中的catch塊還拋出異常,使異常消失;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM