【问题标题】:Server.MapPath in ASP.NetASP.Net 中的 Server.MapPath
【发布时间】:2011-12-13 12:26:57
【问题描述】:

我开发了一个使用ASP.NetMicrosoft Access 作为数据库的Web 应用程序。现在我已经使用 OleDB 连接连接到数据库。问题是当我在连接字符串Source="C:/WebApp/DB/data.mdb" 中提供数据库源时。连接会抛出错误,说明路径无效并且没有这样的文件。

我尝试过使用

Server.MapPath("~/DB/data.mdb") 

它给出的路径为“C:/WebApp/DB/data.mdb”,但抛出相同的错误

Colud not locate file 'C:/WebApp/DB/data.mdb'

应该是什么问题,即使当我使用 Plesk 将它发布到服务器时它在 loalhost 中运行良好,它也会显示相同的错误,说明“C:/inetpub/xyx.com/httpdocs/...”不是找到了

【问题讨论】:

    标签: asp.net vb.net ms-access server.mappath


    【解决方案1】:

    尝试使用 wndows 路径(反斜杠而不是正斜杠)。

    如果您使用 Web 应用程序发布 access 数据库,您还可以研究将其放在 App_Data 文件夹中。阅读here了解更多信息。

    一个完整的例子是here

    请注意,在您当前的示例中,如果 DB 是 Web 根目录下的文件夹,那么任何人只要知道文件名就可以下载您的数据库。默认情况下,存储在 App_Data 中的项目不会提供给客户端。

    还请注意,有用的是,当您将项目存储在 App_Data 中时,您的连接字符串变为:

    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\data.mdb;Persist Security Info=False;" 
    

    (加上任何用户/密码详细信息)。 ASP.Net 将解析 |DataDirectory|运行时的路径。

    【讨论】:

      【解决方案2】:

      您是否尝试过使用 windows 路径? (注意反斜杠)

      C:\WebApp\DB\data.mdb
      

      【讨论】:

        【解决方案3】:

        可能有几个问题,请检查以下项目:

        • 检查DB 文件夹是否存在于您的应用程序的根级别
        • 确保数据库文件data.mdb存在于DB文件夹下

        根据上面列出的任何选项缺失采取适当的措施。

        【讨论】:

          猜你喜欢
          • 2010-09-21
          • 1970-01-01
          • 2018-08-30
          • 2011-04-17
          • 1970-01-01
          • 2013-10-11
          • 1970-01-01
          • 1970-01-01
          • 2013-04-27
          相关资源
          最近更新 更多