J'ai un ASP.NET MVC sur lequel je travaille qui fonctionne très bien lorsqu'il est exécuté à partir de VS2015, mais après le déploiement sur IIS 8.5, je reçois l'erreur dans titre lors de l'accès aux contrôleurs utilisant GET. Ci-dessous, il y a une trace de la pile:Index était en dehors des limites de la matrice - ASP.NET MVC après le déploiement
[IndexOutOfRangeException: Index was outside the bounds of the array.]
Accounting.Controllers.IesiriController.ShowInvoice(String tipDocument, String seria, Nullable`1 nrDocument, String dataDocument, String clientName) +12673
lambda_method(Closure , ControllerBase , Object[]) +352
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +229
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +35
System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +39
System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +67
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +72
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +385
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +38
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +185
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +29
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +65
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +52
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +43
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +65
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +656
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +143
Le cadre cible est de 4,5 Je ne sais pas pourquoi cela se passe ...
UPDATE (ci-dessous est le code ShowInvoice):
public ActionResult ShowInvoice(string tipDocument, string seria, int? nrDocument, string dataDocument, string clientName)
{
//get company data
ViewBag.CompanyName = System.Configuration.ConfigurationManager.AppSettings["CompanyName"];
ViewBag.CodFiscal = System.Configuration.ConfigurationManager.AppSettings["CodFiscal"];
ViewBag.NrRegCom = System.Configuration.ConfigurationManager.AppSettings["NrRegCom"];
ViewBag.Adresa = System.Configuration.ConfigurationManager.AppSettings["Adresa"];
ViewBag.Adresa2 = System.Configuration.ConfigurationManager.AppSettings["Adresa2"];
ViewBag.IBAN = System.Configuration.ConfigurationManager.AppSettings["IBAN"];
ViewBag.Banca = System.Configuration.ConfigurationManager.AppSettings["Banca"];
if ((tipDocument == null) || (seria == null) || (nrDocument == null) || (dataDocument == null))
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
string dataDoc2 = dataDocument.Split(' ')[0];
string dataDoc = dataDoc2.Split('/')[1] + "/" + dataDoc2.Split('/')[0] + "/" + dataDoc2.Split('/')[2];
string dataDocTVA = dataDoc2.Split('/')[2] + "-" + dataDoc2.Split('/')[0] + "-" + dataDoc2.Split('/')[1];
//get Note
string queryNote = "SELECT TOP(1) * FROM Iesiris i "
+ "INNER JOIN Clients c ON i.ClientID = c.ID "
+ "INNER JOIN Articoles a ON i.ArticolID = a.ID "
+ "INNER JOIN SeriiFacturis s ON i.SeriaID = s.ID "
+ "WHERE i.NrDocument = " + nrDocument + " AND i.DataDocument = '" + dataDocument + "' AND s.Seria = '" + seria + "'";
var returnedNote = db.Database.SqlQuery<IesiriVMDetails>(queryNote).ToList();
ViewBag.note = returnedNote[0].Note;
int ClientID = returnedNote[0].ClientID;
//get date delegat
ViewBag.Delegat = returnedNote[0].Delegat;
ViewBag.DelegatSeria = returnedNote[0].DelegatSeria;
ViewBag.DelegatNumar = returnedNote[0].DelegatNumar;
ViewBag.DelegatEliberat = returnedNote[0].DelegatEliberat;
ViewBag.DelegatAuto = returnedNote[0].DelegatAuto;
//get emis de
ViewBag.fullName = returnedNote[0].EmisDe;
ViewBag.ci = returnedNote[0].CI;
//get date client
string queryClient = "SELECT TOP(1) * FROM Clients WHERE ID = " + ClientID;
var returnedClient = db.Database.SqlQuery<Clients>(queryClient).ToList();
if (returnedClient[0].VatPayer == true)
{
ViewBag.codFiscal = "RO" + returnedClient[0].FiscalCode;
}
else
{
ViewBag.codFiscal = returnedClient[0].FiscalCode;
}
/*
//get user data
string queryUser = "SELECT TOP(1) * FROM AspNetUsers WHERE UserName = '" + User.Identity.Name + "'";
var returnedUser = db.Database.SqlQuery<Users>(queryUser).ToList();
ViewBag.fullName = returnedUser[0].FirstName + " " + returnedUser[0].LastName;
ViewBag.ci = returnedUser[0].CI;
*/
ViewBag.nrRegCom = returnedClient[0].Regnumber;
ViewBag.adresa = returnedClient[0].Address;
ViewBag.contBancar1 = returnedClient[0].BankAcc1;
ViewBag.banca1 = returnedClient[0].BankName1;
string scadenta = returnedNote[0].ScadentaDocument.ToString();
string scadentaDoc2 = scadenta.Split(' ')[0];
ViewBag.scadentaDocument = scadentaDoc2.Split('/')[1] + "/" + scadentaDoc2.Split('/')[0] + "/" + scadentaDoc2.Split('/')[2];
ViewBag.tipDocument = tipDocument;
ViewBag.dataDocument = dataDoc;
ViewBag.nrDocument = nrDocument;
ViewBag.seria = seria;
ViewBag.clientName = clientName;
string query = "SELECT * FROM Iesiris i "
+ "INNER JOIN Clients c ON i.ClientID = c.ID "
+ "INNER JOIN Articoles a ON i.ArticolID = a.ID "
+ "INNER JOIN SeriiFacturis s ON i.SeriaID = s.ID "
+ "WHERE i.NrDocument = " + nrDocument + " AND i.DataDocument = '" + dataDocument + "' AND s.Seria = '" + seria + "'";
IEnumerable<IesiriVMDetails> data = db.Database.SqlQuery<IesiriVMDetails>(query);
//get Total and total TVA
decimal total = data.Sum(item => item.Valoare);
decimal totalTVA = data.Sum(item => item.ValoareTVA);
ViewBag.totalGeneral = total + totalTVA;
ViewBag.total = total;
ViewBag.totalTVA = totalTVA;
//verifica TVA la incasare vanzator pentru adaugarea notei
int cui = Int32.Parse(returnedClient[0].FiscalCode.ToString());
RTVAI.IService1 obj_rtvai = new RTVAI.Service1Client();
string tvaIncasare = obj_rtvai.checkVATonCollection(cui, dataDocTVA);
if (tvaIncasare == "DA")
{
ViewBag.TVAincasare = "TVA la incasare";
}
return View(data.ToList());
}
Je me demande pourquoi cela fonctionne parfaitement lors du débogage .... Une fois déployé, je reçois cette erreur avec d'autres actions aussi ... qui sont différentes que le ShowInvoice
poster votre méthode d'action 'ShowInvoice' ainsi que – adiga
Très douteux qu'il s'agisse d'un problème lié à l'ID de déploiement, c'est qu'il est lié au code qui a été écrit et est en cours d'exécution - veuillez poster le code qui lève – GregH
ai mis à jour la question avec le code –