2017-04-07 32 views
1

我是web api中的新成员,现在正试图将Web服务转换为web api。但是,我在运行web api时遇到了问题。请帮助解决这个问题。Web Api获取FromUri - ArrayList问题

我已经在模型的类中声明了两个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

如果我没有把为参数名称&的parameterValue任何价值,那么我能够得到的结果。

如果我将参数名称& ParameterValue的值(工厂& 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; 
    } 
+0

请分享web api控制器功能 –

+0

@MarcusH,增加控制器代码。 –

+0

您需要从控制器方法返回一些东西,以便返回某些内容。它不会返回任何东西。 –

回答

0

最有可能有一个与所述参数在其中类使用ArrayList不能与FromUri属性来填充所述GetExecProcedureWithOutput方法结合的问题。

而不是使用ArrayList中我会尝试使用“简单”的参数类型像string[]List<string>的。