Web Api获取FromUri - ArrayList问题

时间:2017-04-07 09:14:31

标签: asp.net-web-api

我是web api的新手,现在正在尝试将Web服务转换为web api。但是我在运行web api时遇到了问题。请帮忙解决这个问题。

我在模型的类中声明了两个ArrayList(ParameterName& ParameterValue),并且在两个参数中都有值可选。

public class PNAWcfData
{
    public PNAWcfData()
    {
        Server = "";
        Database = "";
        LoginID = "";
        Password = "";
        CmdTimeout = 30;
        Success = false;
    }
    public string Server { get; set; }
    public string Database { get; set; }
    //......
    public ArrayList ParameterName { get; set; }
    public ArrayList ParameterValue { get; set; }
    //......

运行时...... http://localhost:53386/api/webapi?Server=PNANTE813&Database=FF_ANDON&StoredProcName=udpDEV_GetProjectByPlant&ParameterName=Plant&ParameterValue=Plant1

如果我没有为ParameterName& ParameterValue,然后我就能得到结果。

如果我将值(Plant& Plant1)放入ParameterName& ParameterValue,然后它仍然成功但不知何故什么都没有返回。它应该返回值。

控制器代码:

namespace PNAWebApi.Controllers
{
public class WebApiController : ApiController
{
    public PNAWcfData GetExecProcedureWithOutput([FromUri] PNAWcfData pPNAWcfData)
    {
        String lsConnStr;

        if (CheckConnData(pPNAWcfData.Server, pPNAWcfData.Database, pPNAWcfData.LoginID, pPNAWcfData.Password) == false)
        {
            pPNAWcfData.Success = false;
            pPNAWcfData.ErrMsg = "Database connection Info is not provided!";
        }
        else
        {
            lsConnStr = GetConnStr(pPNAWcfData.Server, pPNAWcfData.Database, pPNAWcfData.LoginID, pPNAWcfData.Password);

            try
            {
                if (pPNAWcfData.StoredProcName == "")
                {
                    pPNAWcfData.Success = false;
                    pPNAWcfData.ErrMsg = "Invalid Stored Procedure!";
                }
                else
                {
                    using (SqlConnection loConn = new SqlConnection(lsConnStr))
                    {
                        using (SqlCommand loCmd = new SqlCommand(pPNAWcfData.StoredProcName, loConn))
                        {
                            loCmd.CommandType = System.Data.CommandType.StoredProcedure;
                            loCmd.CommandTimeout = pPNAWcfData.CmdTimeout;

                            if (pPNAWcfData.ParameterName != null && pPNAWcfData.ParameterValue != null)
                            {
                                for (int i = 0; i < pPNAWcfData.ParameterName.Count; ++i)
                                {
                                    loCmd.Parameters.AddWithValue(pPNAWcfData.ParameterName[i].ToString(), pPNAWcfData.ParameterValue[i]);
                                }
                            }

                            if (loConn.State =.............
                                ....................
            catch (Exception ex)
            {
                pPNAWcfData.Success = false;
                pPNAWcfData.ErrMsg = ex.Message;
            }
        }

        return pPNAWcfData;
    }

1 个答案:

答案 0 :(得分:0)

GetExecProcedureWithOutput方法中的参数绑定很可能存在问题,其中类使用的ArrayList不能用FromUri属性填充。

我会尝试使用&#34;更简单的&#34;而不是使用ArrayList。参数类型,如string[]List<string>