Asp.net web api Web Api从URI获取-ArrayList问题

Asp.net web api Web Api从URI获取-ArrayList问题,asp.net-web-api,Asp.net Web Api,我是web api新手,现在正尝试将web服务转换为web api。然而,我在运行web api时遇到了这个问题。请在这个问题上提供帮助 我已经在模型的类中声明了两个ArrayList(ParameterName和ParameterValue),在这两个参数中都有值是可选的 public class PNAWcfData { public PNAWcfData() { Server = ""; Database = ""; Logi

我是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; }
    //......
当运行它时。。。

如果我没有为ParameterName&ParameterValue输入任何值,那么我可以得到结果

如果我为ParameterName和ParameterValue输入了值(Plant和Plant1),那么它仍然成功,但不知何故没有返回任何结果。它应该返回值

控制器代码:

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;
    }
名称空间PNAWebApi.Controllers
{
公共类WebApicController:ApicController
{
公共PNAWcfData GetExecuteProceduceWireThoutput([FromUri]PNAWcfData pPNAWcfData)
{
字符串lsConnStr;
if(CheckConnData(pPNAWcfData.Server、pPNAWcfData.Database、pPNAWcfData.LoginID、pPNAWcfData.Password)==false)
{
pPNAWcfData.Success=false;
pPNAWcfData.ErrMsg=“未提供数据库连接信息!”;
}
其他的
{
lsConnStr=GetConnStr(pPNAWcfData.Server,pPNAWcfData.Database,pPNAWcfData.LoginID,pPNAWcfData.Password);
尝试
{
如果(pPNAWcfData.StoredProcName==“”)
{
pPNAWcfData.Success=false;
pPNAWcfData.ErrMsg=“无效存储过程!”;
}
其他的
{
使用(SqlConnection loConn=newsqlconnection(lsConnStr))
{
使用(SqlCommand loCmd=new SqlCommand(pPNAWcfData.StoredProcName,loConn))
{
loCmd.CommandType=System.Data.CommandType.StoredProcess;
loCmd.CommandTimeout=pPNAWcfData.CmdTimeout;
if(pPNAWcfData.ParameterName!=null&&pPNAWcfData.ParameterValue!=null)
{
对于(int i=0;i
在GetExecuteProcedureViewThoutput方法中,类使用ArrayList(不能用FromUri属性填充)时,参数绑定很可能存在问题


我不使用ArrayList,而是尝试使用一种“更简单”的参数类型,如
string[]
List

,很可能是GetExecuteProcedureWithOutput方法中的参数绑定有问题,其中类使用的ArrayList不能用FromUri属性填充


我不使用ArrayList,而是尝试使用“更简单”的参数类型,如
string[]
列表

请共享web api控制器function@MarcusH,添加了控制器代码。您需要从控制器方法中返回一些内容,它才能返回一些内容。。从您刚才添加的控制器代码中,它不会返回任何内容。@MarcusH,结尾处有一个返回(已更新了本文中的代码),返回整个类。我之前没有包含它,因为代码有点长。p/s:ParameterName和ParameterValue在类中定义为ArrayList。其余为原始数据类型。如果在控制器方法内设置断点。ArrayList是否填充了plant值?如果没有,则我将添加字符串[]请共享web api控制器,而不是ArrayList并尝试使用它function@MarcusH,添加了控制器代码。您需要从控制器方法中返回一些内容,它才能返回一些内容。从您刚才添加的控制器代码中,它不会返回任何内容。@MarcusH,结尾处有一个返回(已更新此帖子中的代码),返回整个类。我之前没有包含它,因为代码有点长。p/s:ParameterName和ParameterValue在类中定义为ArrayList。其余为原始数据类型。如果在控制器方法内设置断点。ArrayList是否填充了plant值?如果没有,则我将添加字符串[]而不是ArrayList并尝试使用它