文件访问重试超时(ASP.NET WebPages / Razor / C#)

时间:2012-07-02 18:35:25

标签: c# asp.net .net sql-server entity

我不断支持关键字:查看访问我的数据库的网页时出现“文件访问重试超时”错误。

所以我假设它无法访问数据库。刚看到我的主页时,我刚才遇到了同样的问题。我改变了(在我的_AppStart.cshtml文件中):

WebSecurity.InitializeDatabaseConnection("MYDB", etc, etc, etc, etc);

为:

WebSecurity.InitializeDatabaseConnection("Data Source=|DataDirectory|\\MYDB.sdf", "System.Data.SqlServerCe.4.0", etc, etc, etc, etc);

它有效!

然而,当我转到另一个页面时(试图从C#类(.cs文件)访问数据库)我得到了同样的错误!

但是,在我的C#文件(.cs)中 - 我无法改变:

var database = Database.Open("MYDB");

为:

var database = Database.Open("Data Source=|DataDirectory|\\MYDB.sdf", "System.Data.SqlServerCe.4.0", etc, etc, etc, etc);

...因为它说:

方法'Open'没有重载需要2个参数(显然)。

错误(在.cs文件中进行上述更改之前:

  '/'应用程序中的服务器错误。      

不支持关键字:'文件访问重试超时'。描述:一个   在执行当前Web期间发生了未处理的异常   请求。请查看堆栈跟踪以获取有关的更多信息   错误以及它在代码中的起源。

     

异常详细信息:System.ArgumentException:不支持关键字:   '文件访问重试超时'。

     

来源错误:

> 
> Line 161:     foreach(string item in items) Line 162:     { Line 163:         var
> row = database.QuerySingle("select Suburb, State from
> SuburbsPostCodesAndStates where Suburb = @0", item); Line
> 164:          if(row != null) Line 165:           {
>   
  

源文件:   C:\ HostingSpaces \ jpezzime \ mysite.com \ wwwroot的\ App_Code文件\ JTSi.cs   行:163

     

堆栈追踪:

     

[ArgumentException:不支持关键字:'文件访问重试   超时”。]
  System.Data.SqlServerCe.SqlCeConnectionStringBuilder.GetIndex(字符串   关键字)+198
  System.Data.SqlServerCe.SqlCeConnectionStringBuilder.set_Item(字符串   关键字,对象值)+31
  System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(字符串   价值)+185
  System.Data.SqlServerCe.SqlCeConnectionStringBuilder..ctor(字符串   connectionString)+181
  System.Data.SqlServerCe.SqlCeConnection.set_ConnectionString(字符串   价值)+241
  WebMatrix.Data.DbProviderFactoryWrapper.CreateConnection(字符串   connectionString)+96
  WebMatrix.Data<> C_ DisplayClass15.b _14()   +16 WebMatrix.Data.Database.get_Connection()+19 WebMatrix.Data.Database.EnsureConnectionOpen()+ 13
  WebMatrix.Data.d__0.MoveNext()+72
  C:\ HostingSpaces \ jpezzime \ mysite.com \ wwwroot \ App_Code \ JTSi.cs中的System.Linq.Enumerable.FirstOrDefault(IEnumerable 1 source) +4232212
WebMatrix.Data.Database.QuerySingle(String commandText, Object[] args) +98 JTSi.FindSetAndRemoveLocation(List
1项):163   ASP._Page_Shared_Pages_Search_cshtml.Execute()in   C:\ HostingSpaces \ jpezzime \ mysite.com \ wwwroot的\共享\页数\ Search.cshtml:17   System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+208
  System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1   执行者)+68 System.Web.WebPages.WebPage.ExecutePageHierarchy()   +123 System.Web.WebPages.StartPage.RunPage()+19 System.Web.WebPages.StartPage.ExecutePageHierarchy()+67
  System.Web.WebPages.StartPage.RunPage()+19
  System.Web.WebPages.StartPage.ExecutePageHierarchy()+67
  System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext   pageContext,TextWriter writer,WebPageRenderingBase startPage)+78
  System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase   httpContext)+121

     

----------------------------------------------- ---------------------------------版本信息:Microsoft .NET Framework版本:4.0.30319;   ASP.NET版本:4.0.30319.272

有人可以帮忙解释一下吗?我完全不知道一个网站如何在几分钟内完全搞砸,完全搞砸了 - 当我甚至没有做出任何改变时!

2 个答案:

答案 0 :(得分:1)

解决方案:

取代:

var database = Database.Open("MYDB");

使用:

var database = Database.OpenConnectionString("Data Source=|DataDirectory|\\MYDB.sdf", "System.Data.SqlServerCe.4.0");

答案 1 :(得分:1)

连接字符串存在问题 - “File Access Retry Timeout”是一个新关键字,已添加到较新版本的SQL Compact中。您可能正在服务器上运行它的旧版本。