今日刚转做ASP.NET ,之前做WINFORM程序的。
遇到一个在WINFORM上很简单的问题,就是提交更新
(前面的声明就不写了)
string strMap="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\\Inetpub\\wwwroot\\Menu_Data\\Data\\data.mdb;";
string strSql="UPDATE Menu_news SET n_title= 数据库组件使用演示',n_content='这是内容fafafafaf' WHERE n_id='1'";

ocn= new OleDbConnection(strMap);
ocmd =new OleDbCommand(strSql,ocn);
ocn.Open();
ocmd.ExecuteNonQuery();
Label1.Text="更新成功";
ocn.Close();就这么几句我在winform 里面就能成功更新,可是移植到asp.net上就老报错,各式各样:
System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。
或者 System.InvalidOperationException: ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.
还有的时候还会报data.mdb文件被独占
请问ASP.NET里面是不是更新语句和一般的.net winfrom程序不一样??该如何改?

解决方案 »

  1.   

    ACCESS所在的文件不能是只读的,而且在NTFS格式下“IUser_机器名”这个用户对ACCESS文件有写权限。
      

  2.   

    我也是这个问题,好郁闷啊,我NTFS的格式,但是属性里没有 安全 标签页,真的很郁闷,我自己写的ASPX程序都可以写,但是在站点配置了的文件夹下就要出这样的问题,我说拷文件出来执行,又说什么资源文件找不到,好郁闷,好郁闷。
      

  3.   

    我把用户
    aspnet
    iusr_computer
    iwam_computer
    都放到管理员组了还是不能解决问题~~~郁闷死了。
      

  4.   

    如果只是调试程序其它逻辑的目的,给你一个简单的临时办法:把 windows\microsoft .net\相应版本号\config 目录中的machine.config配置文件改变,搜索其中的processmodel标签,其中标记使用aspnet身份启动asp.net进程,你可以把它修改为你的机器的系统管理员,并且写上登录密码。然后,进入iis把application pools的“权限”中添加入系统管理员。这时候你用系统管理员身份登录并调试程序。如果成功,将来在找为什么aspnet身份权限不够的问题。
      

  5.   

    目录的权限、文件的权限、虚拟目录的权限、注册表的权限、文件是否被标记为只读,你的access数据库是否被其它非正常退出的客户端锁死或者损坏,等等很多原因。
      

  6.   

    sp1234(半梦半醒之间,情人沙漠上好像只有我一颗不死的种子。) :application pools 没有找到。配置文件改了~数据库文件是同样的~我把另外一个文件夹可以执行的程序拷过来,就在这个问题文件夹里不能执行~
    ~
      

  7.   

    果然我在文件的属性里面发现了NTFS格式下才有的“IUser_机器名”的相关选项,设置成允许就行了,谢谢