Слишком много параметров в контроллерах MVC2 или проблема IIS? - PullRequest
0 голосов
/ 23 мая 2010

Я использую контроллер для вызова хранимой процедуры, которая требует 12 параметров. Это прекрасно работает в режиме отладки локально (работа с удаленной базой данных), но не тогда, когда я публикую его на своем сервере IIS 7. Он жалуется на параметр # 7, утверждая, что не поставляется с URL.

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)
            };
        }
    }
}

Ответы [ 3 ]

1 голос
/ 23 мая 2010

В коде много проблем, но ни одна из них не должна его останавливать.

Вам нужно отладить.

  1. Установите точку останова на старте вашего контроллера и убедитесь, что значения его параметров устанавливаются в соответствии с ожиданиями.

  2. Запустите SQL Profiler, чтобы увидеть, какие звонки поступают в вашу базу данных, и проверьте, что вы ожидаете.

1 голос
/ 23 мая 2010

Вы проверили с помощью «GET request limit»?

0 голосов
/ 23 мая 2010

Установите для MaxRequestBytes в параметрах http 64 КБ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...