asp.net网站数据库在其他计算机上运行vs时不会连接到.mdf文件

时间:2016-06-15 20:41:33

标签: c# .net connection-string

我已经建立了一个asp.net网站usinbg visual studio。所有文件都在我桌面上的文件夹中,包括.mdf数据库文件。但是当我在另一台计算机上通过visual studio打开文件夹时,当我尝试运行网站时,我告诉我它无法找到.mdf文件,我知道这将是我的连接字符串/连接classk的问题,但我尝试过使用连接类和连接字符串,但它仍然不会加载数据库。

这是我的网络配置文件:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.5.2"/>
  </system.web>
  <connectionStrings>
    <add name="nas_connect" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\nas.mdf;Integrated Security=True"
      providerName="System.Data.SqlClient" />
    <add name="nasConnectionString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=&quot;C:\Users\joshy\Documents\Visual Studio 2015\WebSites\nas2\App_code\nas.mdf&quot;;Integrated Security=True;Connect Timeout=30"
      providerName="System.Data.SqlClient" />
    <add name="nasConnectionString2" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=&quot;C:\Users\joshy\Documents\Visual Studio 2015\WebSites\nas2\App_code\nas.mdf&quot;;Integrated Security=True;Connect Timeout=30"
      providerName="System.Data.SqlClient" />
    <add name="nasConnectionString3" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=&quot;C:\Users\joshy\Documents\Visual Studio 2015\WebSites\nas2\App_code\nas.mdf&quot;;Integrated Security=True;Connect Timeout=30"
      providerName="System.Data.SqlClient" />
    <add name="nasConnectionString4" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=&quot;C:\Users\joshy\Documents\Visual Studio 2015\WebSites\nas2\App_code\nas.mdf&quot;;Integrated Security=True;Connect Timeout=30"
      providerName="System.Data.SqlClient" />
    <add name="insert into" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=&quot;C:\Users\joshy\Documents\Visual Studio 2015\WebSites\nas2\App_code\nas.mdf&quot;;Integrated Security=True;Connect Timeout=30"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246"/>
        <bindingRedirect oldVersion="1.0.0.0-4.1.0.0" newVersion="4.1.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246"/>
        <bindingRedirect oldVersion="1.0.0.0-4.1.0.0" newVersion="4.1.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.5.2.14234.0.0" newVersion="1.5.2.14234.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0"/>
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
  </system.data>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

  <appSettings>
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
  </appSettings>




</configuration>

这是我的connectionclass.cs文件:

using System.Collections;
using System.Configuration;
using System.Data.SqlClient;
using Entities;

public static class ConnectionClass
{
    private static SqlConnection conn;
    private static SqlCommand command;
    private static object toursdate;

    static ConnectionClass()
    {
        string connectionString = ConfigurationManager.ConnectionStrings["nas_connect"].ToString();
        conn = new SqlConnection(connectionString);
        command = new SqlCommand("", conn);
    }

    #region tours
    public static tours GettoursByID(int id)
    {
        string query = string.Format("SELECT * FROM tours WHERE id =  '{0}'", id);
        tours tours = null;

        try
        {
            conn.Open();
            command.CommandText = query;
            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                string name = reader.GetString(1);
                string date = reader.GetString(2);
                double price = reader.GetDouble(3);
                string venue = reader.GetString(4);
                string country = reader.GetString(5);
                string image = reader.GetString(6);
                string description = reader.GetString(7);

                tours = new tours(id, name, date, price, venue, country, image, description);
            }
        }
        finally
        {
            conn.Close();
        }

        return tours;
    }

    public static ArrayList GettoursBydate(string tourdate)
    {
        ArrayList list = new ArrayList();
        string query = string.Format("SELECT * FROM tours WHERE date LIKE '{0}'", toursdate);

        try
        {
            conn.Open();
            command.CommandText = query;
            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                int id = reader.GetInt32(0);
                string name = reader.GetString(1);
                string date = reader.GetString(2);
                double price = reader.GetDouble(3);
                string venue = reader.GetString(4);
                string country = reader.GetString(5);
                string image = reader.GetString(6);
                string description = reader.GetString(7);

                tours tours = new tours(id, name, date, price, venue, country, description, image);
                list.Add(tours);
            }
        }
        finally
        {
            conn.Close();
        }

        return list;
    }

    public static void Addtours(tours tours)
    {
        string query = string.Format(
            @"INSERT INTO tours VALUES ('{0}', '{1}', @prices, '{2}', '{3}','{4}', '{5}')",
            tours.Name, tours.date, tours.venue, tours.Country, tours.Image, tours.description);
        command.CommandText = query;
        command.Parameters.Add(new SqlParameter("@prices", tours.Price));
        try
        {
            conn.Open();
            command.ExecuteNonQuery();
        }
        finally
        {
            conn.Close();
            command.Parameters.Clear();
        }
    }
    #endregion

    #region Users
    public static User LoginUser(string name, string password)
    {
        //Check if user exists
        string query = string.Format("SELECT COUNT(*) FROM nas.dbo.users WHERE name = '{0}'", name);
        command.CommandText = query;

        try
        {
            conn.Open();
            int amountOfUsers = (int)command.ExecuteScalar();

            if (amountOfUsers == 1)
            {
                //User exists, check if the passwords match
                query = string.Format("SELECT password FROM users WHERE name = '{0}'", name);
                command.CommandText = query;
                string dbPassword = command.ExecuteScalar().ToString();

                if (dbPassword == password)
                {
                    //Passwords match. Login and password data are known to us.
                    //Retrieve further user data from the database
                    query = string.Format("SELECT email, user_type FROM users WHERE name = '{0}'", name);
                    command.CommandText = query;

                    SqlDataReader reader = command.ExecuteReader();
                    User user = null;

                    while (reader.Read())
                    {
                        string email = reader.GetString(0);
                        string type = reader.GetString(1);

                        user = new User(name, password, email, type);
                    }
                    return user;
                }
                else
                {
                    //Passwords do not match
                    return null;
                }
            }
            else
            {
                //User does not exist
                return null;
            }
        }
        finally
        {

            conn.Close();
        }
    }

    public static string RegisterUser(User user)
    {
        //Check if user exists
        string query = string.Format("SELECT COUNT(*) FROM users WHERE name = '{0}'", user.Name);
        command.CommandText = query;

        try
        {
            conn.Open();
            int amountOfUsers = (int)command.ExecuteScalar();

            if (amountOfUsers < 1)
            {
                //User does not exist, create a new user
                query = string.Format("INSERT INTO users VALUES ('{0}', '{1}', '{2}', '{3}')", user.Name, user.Password,
                                      user.Email, user.Type);
                command.CommandText = query;
                command.ExecuteNonQuery();
                return "User registered!";
            }
            else
            {
                //User exists
                return "A user with this name already exists";
            }
        }
        finally
        {
            conn.Close();
        }
    }
    #endregion

}

.mdf数据库文件位于项目文件夹的app_code文件夹中。

任何帮助将不胜感激, 谢谢。

2 个答案:

答案 0 :(得分:0)

请务必将.mdf文件分发到App_Code文件夹而不是|DataDirectory|。默认情况下,连接字符串上的App_Data映射到{{1}}。

答案 1 :(得分:0)

尝试将此用作ur连接字符串: -

 <connectionStrings>
      <add name="nas_connect"
        connectionString="Data Source=.\MSSQLLocalDB;AttachDbFilename=|DataDirectory|app_code\nas.mdf;Integrated Security=True;User Instance=True"
        providerName="System.Data.SqlClient" />
    </connectionStrings>