在发布到服务器-500内部服务器错误后,使用EntityFramework和ajax post是不起作用的

本文关键字:服务器 ajax EntityFramework post 使用 不起作用 -500 内部 错误 | 更新日期: 2023-09-27 18:24:31

我的项目在运行Visual Studio 2010(SP1)WebServer 的计算机上运行良好

当发布到服务器时,所有的问题都像往常一样

服务器为:windows2003

我不认为它以前在其他项目中尝试过运行Ef

所以一开始我在引用方面有很多错误,尽管我已经设法克服了这些错误,最后当项目中的所有内容都设置好了,我可以看到页面而不是调试错误。。。我一提交,表格就显示

当我发布表单时(使用jQuery/AjaxPOST),我得到500 internal server error

甚至不知道有什么问题

Try Catch封装SaveChanges()只返回500内部服务器错误

同样,在本地一切都很好,但发布到服务器时就不好了

与最近的项目相比,唯一的变化是使用了实体框架

使用语句

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using HtTakalotModel;
//and this last one was added only to try get more info on the error 
using System.Data.Entity.Validation;
[WebMethod]
public static string SendCfrm(object SentPars)
{
    string newLinw = Environment.NewLine;
    var formValues =(Array) SentPars;
    string cName = "", cPhone = "", cMail = "", cUrgency = "", cComments = "";
    int cLocalSnif = 0;
    string RecordsEfected = "";
    Dictionary<string, string> MainDataDict = new Dictionary<string, string>();
    foreach (Dictionary<string, object> pair in formValues)
    {
        cName = (string)((object[])pair["value"])[0];
        cMail = (string)((object[])pair["value"])[1];
        cPhone = (string)((object[])pair["value"])[2];
        cUrgency = (string)((object[])pair["value"])[3];
        cLocalSnif = ((object[])pair["value"])[4].ToString().ToInt();
        cComments = (string)((object[])pair["value"])[5];
    }
    try
    {
        using (var dbTakalot = new HtTakalotEntities())
        {
            var NewTakala = new tblHtTakalot()
            {
                ClientName = cName,
                ClientPhone = cPhone,
                ClientMail = cMail,
                Urgency = cUrgency,
                LocalSnif = cLocalSnif,
                CreationDate = DateTime.Now,
                TakalaDesc = cComments
            };
            dbTakalot.tblHtTakalot.AddObject(NewTakala);
            RecordsEfected = dbTakalot.SaveChanges().ToString();
        }
    }
    catch (DbEntityValidationException e)
    {
        return e.ToString();
    }
    if (RecordsEfected != "1")
        return "noGo";
    return RecordsEfected;
  }
}

还有。。。附带说明:在我的本地机器上,我正在运行

localhost'projectName'...

在服务器上,我的项目只是iis 中的一个文件夹

所以层次结构就是

  inetPub'wwwroot'App_Code 
  inetPub'wwwroot'MyProjectName'App_Code

web.config等相同

我想这是常见的

我的主要怀疑是,最初在服务器中没有正确配置某些东西,无法运行实体框架

我的ef版本是通过NuGet下载的(所以它是V.5)

我的项目和服务器上的两个框架都设置为4.0

我必须在服务器上进行任何预记录,这可能有什么问题?

我必须确保是否有一个.net框架版本(sub4.x.…更新)来支持ef吗?

请帮我这里已经3个小时了,我正在努力解决这个问题

更新

更改try Catch以捕获DbEntityValidationException 指示的异常后

错误是

System.Data.UpdateException:更新条目时出错。有关详细信息,请参阅内部异常。--->System.ArgumentException:正在使用的SQL Server版本不支持数据类型"datetime2"。位于System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[]rpcArray,Int32超时,布尔值inSchema,SqlNotificationRequest通知请求,TdsParserStateObject stateObj,布尔值isCommandProc)System.Data.SqlClient.SqlCommand.ExecuteReader上的System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior RunBehavior,Boolean returnStream、String方法、DbAsyncResult结果)(CommandBehavior行为,String方法)位于System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehBehavior行)位于System.Data_.Mapping.Update.Interface.DynamicUpdateCommand.Exeute(UpdateTranslator转换器,EntityConnection连接,Dictionary 2 identifierValues, List 1 generatedValues)System.Data.MMapping.Update.Interal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter适配器System.Data.Objects.ObjectContext.SaveChanges(SaveOptions选项),位于c:''Inetpub''wwwroot''sell''HtTakalot''HtTakalotForm.aspx中的System.Data.Objects.ObjectContext.SaveChanges()处

请检查您的配置是否有效。500表示你的asp.net配置无效。尝试通过命令模式在Microsoft.net目录aspnet_regiis.exe-i中注册asp.net,并且您是否在服务器上安装了ajax工具包或在服务器上复制了工具包dll。

您可以在此处检查不同的服务器代码。http://support.microsoft.com/kb/943891

问候,

在发布到服务器-500内部服务器错误后,使用EntityFramework和ajax post是不起作用的

相关文章: