我是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,然后我就能得到结果。
如果我将值(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;
}
答案 0 :(得分:0)
GetExecProcedureWithOutput方法中的参数绑定很可能存在问题,其中类使用的ArrayList不能用FromUri属性填充。
我会尝试使用&#34;更简单的&#34;而不是使用ArrayList。参数类型,如string[]
或List<string>
。