我正在使用控制器来调用需要12个参数的存储过程。这在本地调试模式下完美地工作(对远程数据库工作),但是当我将它发布到我的IIS 7服务器时则不行。它抱怨参数#7,声称它没有提供URL。
网址调用如下所示;
http://localhost:50160/GetPlaces?p1=1&p2=1&p3=1&p4=1&p5=1&p6=1&p7=1&p8=1&p9=1&p10=1&p11=1&p12=1
有没有人知道这可能是什么原因?任何帮助都会非常感激。
using System;
using System.Configuration;
using System.Web.Mvc;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using Prototype.Models;
namespace Prototype.Controllers
{
public class NameOfStoredProcedureController : Controller
{
char[] lastComma = { ',' };
StringBuilder json = new StringBuilder();
private String strCon = ConfigurationManager.ConnectionStrings["SomeConnectionString"].ConnectionString;
private SqlConnection con;
public StoredProcedureController()
{
con = new SqlConnection(strCon);
}
public string do_NameOfStoredProcedure(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9, int p10, int p11, int p12)
{
con.Open();
using (SqlCommand cmd = new SqlCommand("NameOfStoredProcedure", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@parameter1", p1);
cmd.Parameters.AddWithValue("@parameter2", p2);
cmd.Parameters.AddWithValue("@parameter3", p3);
cmd.Parameters.AddWithValue("@parameter4", p4);
cmd.Parameters.AddWithValue("@parameter5", p5);
cmd.Parameters.AddWithValue("@parameter6", p6);
cmd.Parameters.AddWithValue("@parameter7", p7);
cmd.Parameters.AddWithValue("@parameter8", p8);
cmd.Parameters.AddWithValue("@parameter9", p9);
cmd.Parameters.AddWithValue("@parameter10", p10);
cmd.Parameters.AddWithValue("@parameter11", p11);
cmd.Parameters.AddWithValue("@parameter12", p12);
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
json.AppendFormat("[{0},\"{1}\"],", reader["column1"], reader["column2"]);
}
}
con.Close();
}
if (json.Length.ToString().Equals("0"))
{
return "[]";
}
else
{
return "[" + json.ToString().TrimEnd(lastComma) + "]";
}
}
//http://host.com/NameOfStoredProcedure?parameter=value
public ActionResult Index(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9, int p10, int p11, int p12)
{
return new ContentResult
{
ContentType = "application/json",
Content = do_NameOfStoredProcedure(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12)
};
}
}
}
答案 0 :(得分:1)
您是否已检查过“GET请求长度限制”?
答案 1 :(得分:1)
代码有很多问题,但没有一个应该停止它。
您需要调试。
在控制器的开头放置一个断点,并检查其参数的值是否按预期设置。
运行SQL事件探查器以查看对数据库进行了哪些调用,并按照您的预期进行检查。
答案 2 :(得分:0)
将http参数中的MaxRequestBytes设置为64kb