Asp.net web api Web Api从URI获取-ArrayList问题
我是web api新手,现在正尝试将web服务转换为web api。然而,我在运行web api时遇到了这个问题。请在这个问题上提供帮助 我已经在模型的类中声明了两个ArrayList(ParameterName和ParameterValue),在这两个参数中都有值是可选的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
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并尝试使用它