Ошибка в привязке базы данных к веб-форме - PullRequest
0 голосов
/ 03 июня 2011

Я новичок в создании веб-сайтов, я узнал кое-что только на MSDN, но теперь, когда я пытаюсь сделать очень простой веб-сайт, у меня появляется эта ошибка

"Невозможно найти запрошенную .Net FrameworkПоставщик данных. Возможно, он не установлен. "

http://i.stack.imgur.com/RV5qY.jpg

шагов, необходимых для создания веб-сайта> Новый веб-сайт> Пустой веб-сайт> Добавить новую веб-форму> Перетащите GridView на страницу>Добавлен новый источник данных (формат sdf).

Тестовый запрос работает нормально, но когда я пытаюсь запустить webPage, у меня появляется эта ошибка, я потратил весь предыдущий день на поиск решения (но онипохоже, больше не действительны или предназначены для более старых версий).Я использую Vs2010 Ultimate, установил sqlServer Compact Edition 2008 SP2.Вот файл Web.config:

<configuration>
  <connectionStrings>
 <add name="ConnectionString" connectionString="Data Source=C:\Users\TarunG\Documents\Visual Studio 2010\WebSites\WebSite1\App_Data\Database1.sdf"
  providerName="System.Data.SqlServerCe.Client.3.5" />
 </connectionStrings>
  <system.web>
  <compilation debug="true" targetFramework="4.0"></compilation>
  </system.web>
  </configuration>

База данных содержит только одну таблицу - Результат1.Файл default.aspx:

<body>
  <form id="form1" runat="server">
  <div>
    </div>
  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataKeyNames="Roll No." DataSourceID="SqlDataSource1">
    <Columns>
<asp:BoundField DataField="Roll No." HeaderText="Roll No." ReadOnly="True"
        SortExpression="Roll No." />
      <asp:BoundField DataField="Category" HeaderText="Category"
        SortExpression="Category" />
      <asp:BoundField DataField="Rank" HeaderText="Rank" SortExpression="Rank" />
      <asp:BoundField DataField="Registration No." HeaderText="Registration No."
        SortExpression="Registration No." />
      <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
    </Columns>
  </asp:GridView>
  <asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
    ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
    SelectCommand="SELECT * FROM [Result1]"></asp:SqlDataSource>
  </form>
</body>

machine.config:

<add name="SQL Server Compact Edition Data Provider" invariant="System.Data.SqlServerCe" description=".NET Framework Data Provider for Microsoft SQL Server Compact Edition" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
   <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
      <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>

Ответы [ 2 ]

1 голос
/ 03 июня 2011

как указано здесь: http://msdn.microsoft.com/en-us/library/ms247257.aspx, ваша строка подключения должна выглядеть примерно так:

Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Database1.sdf;Integrated Security=True;User Instance=True

кстати, вам нужна SQL Server Express для работы вышеуказанной строки.

1 голос
/ 03 июня 2011

Для веб-сайта вы должны использовать SQL Server Express, а не SQL Server Compact Edition. SQL Server Compact Edition разработан для автономных, однопользовательских сценариев. ASP.NET ищет драйверы SQL Server Express и не находит их.

Я предлагаю удалить SQL Server Compact Edition, а затем установить SQL Server Express отсюда: http://www.microsoft.com/express/Database/ Это также установит необходимые драйверы.

С установленным SS Express, сделайте вашу строку подключения web.config похожей на это:

<add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Database1.sdf;Integrated Security=True;User Instance=True" providerName="Microsoft.Sql.Client.3.5" />

Удачи!

...