Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
dima19972525
2 / 2 / 1
Регистрация: 26.04.2016
Сообщений: 68
1

Ошибка подключения к БД PostgreSQL

12.02.2018, 15:28. Просмотров 364. Ответов 2
Метки нет (Все метки)

Здравствуйте, есть бд postgresql (test). Файл web.config:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=301879
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup></configSections>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>
  <httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </httpModules></system.web>
  <system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="404"/>
      <remove statusCode="400"/>
      <remove statusCode="403"/>
      <remove statusCode="406"/>
      <remove statusCode="408"/>
      <remove statusCode="500"/>
      <remove statusCode="503"/>
      <error statusCode="404" path="/ErrorPage/Error/404" responseMode="ExecuteURL"/>
      <error statusCode="400" path="/ErrorPage/Error/400" responseMode="ExecuteURL"/>
      <error statusCode="403" path="/ErrorPage/Error/403" responseMode="ExecuteURL"/>
      <error statusCode="406" path="/ErrorPage/Error/406" responseMode="ExecuteURL"/>
      <error statusCode="408" path="/ErrorPage/Error/408" responseMode="ExecuteURL"/>
      <error statusCode="500" path="/ErrorPage/Error/500" responseMode="ExecuteURL"/>
      <error statusCode="503" path="/ErrorPage/Error/503" responseMode="ExecuteURL"/>
    </httpErrors>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  <validation validateIntegratedModeConfiguration="false" /><modules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules></system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.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="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </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.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.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>
      <dependentAssembly>
        <assemblyIdentity name="Npgsql" publicKeyToken="5d8b90d52f46fda7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.6.0" newVersion="2.0.6.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <connectionStrings>
    <!-- TODO: Replace the ****'s with the correct entries --><add name="ECLBaseContext" providerName="Npgsql" connectionString="Server=127.0.0.1;User Id=ecl_adm;Password=ecl_adm96541;Port=5432;Database=ecl_base;" />
      <add name="elmah-postgresql" connectionString="Server=127.0.0.1;Port=5432;Database=elmah;User Id=postgres;Password=postgres;" />
    <add name="TestContext" connectionString="Server=127.0.0.1;Port=5432;Database=test;User Id=postgres;Password=postgres;" providerName="Npgsql"  />
  </connectionStrings>
  <entityFramework>    
    <defaultConnectionFactory type="Npgsql.NpgsqlServices, Npgsql.EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
    </providers>
  </entityFramework>
<system.data>
  <DbProviderFactories>
    <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" 
         description=".Net Framework Data Provider for Postgresql"
         type="Npgsql.NpgsqlFactory, Npgsql" />
  </DbProviderFactories>
</system.data>
<elmah>
    <!--
        See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for 
        more information on remote access and securing ELMAH.
    -->
    <security allowRemoteAccess="false" />
  <errorLog type="Elmah.PgsqlErrorLog, Elmah" connectionStringName="elmah-postgresql" /></elmah><location path="elmah.axd" inheritInChildApplications="false">
    <system.web>
      <httpHandlers>
        <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
      </httpHandlers>
      <!-- 
        See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for 
        more information on using ASP.NET authorization securing ELMAH.
 
      <authorization>
        <allow roles="admin" />
        <deny users="*" />  
      </authorization>
      -->  
    </system.web>
    <system.webServer>
      <handlers>
        <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
      </handlers>
    </system.webServer>
  </location></configuration>
Класс модели:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
 
namespace EmpInfoMain.Models
{
    [Table("department")]
    public class Depart
    {
        [Key]
        [Column("id")]
        public int Id { get; set; }
        [Column("dept")]
        public string Dept { get; set; }
        [Column("emp_id")]
        public int EmpId { get; set; }
 
    }
}
Контекст данных:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
 
namespace EmpInfoMain.Models
{
    public class CotrController : DbContext
    {
        public CotrController() : base(nameOrConnectionString: "TestContext")
        {
 
        }
        public DbSet<Depart> Departs { get; set; }
    }
}
Создал шаблонный контроллер для работы с моделью:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using EmpInfoMain.Models;
 
namespace EmpInfoMain.Controllers
{
    public class DepartsController : Controller
    {
        private CotrController db = new CotrController();
 
        // GET: Departs
        public ActionResult Index()
        {
            return View(db.Departs.ToList());
        }
 
        // GET: Departs/Details/5
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Depart depart = db.Departs.Find(id);
            if (depart == null)
            {
                return HttpNotFound();
            }
            return View(depart);
        }
 
        // GET: Departs/Create
        public ActionResult Create()
        {
            return View();
        }
 
        // POST: Departs/Create
        // Чтобы защититься от атак чрезмерной передачи данных, включите определенные свойства, для которых следует установить привязку. Дополнительные 
        // сведения см. в статье https://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "Id,Dept,EmpId")] Depart depart)
        {
            if (ModelState.IsValid)
            {
                db.Departs.Add(depart);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
 
            return View(depart);
        }
 
        // GET: Departs/Edit/5
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Depart depart = db.Departs.Find(id);
            if (depart == null)
            {
                return HttpNotFound();
            }
            return View(depart);
        }
 
        // POST: Departs/Edit/5
        // Чтобы защититься от атак чрезмерной передачи данных, включите определенные свойства, для которых следует установить привязку. Дополнительные 
        // сведения см. в статье https://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "Id,Dept,EmpId")] Depart depart)
        {
            if (ModelState.IsValid)
            {
                db.Entry(depart).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(depart);
        }
 
        // GET: Departs/Delete/5
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Depart depart = db.Departs.Find(id);
            if (depart == null)
            {
                return HttpNotFound();
            }
            return View(depart);
        }
 
        // POST: Departs/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            Depart depart = db.Departs.Find(id);
            db.Departs.Remove(depart);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
 
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }
    }
}
При вызове метода Index выдает исключение: A null was returned after calling the 'get_ProviderFactory' method on a store provider instance of type 'Npgsql.NpgsqlConnection'. The store provider might not be functioning correctly.

Добавлено через 39 минут
Возможно конфликтует с elmah?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2018, 15:28
Ответы с готовыми решениями:

Postgresql: Ошибка сервера в приложении '/'
Всем привет! C asp.net только начал разбираться, по этому за глупые вопросы прошу не бить....

PostgreSQL, ошибка подключения к таблице
Здравствуйте, у меня возникла такая проблема. На сервере PostgreSQL 9.3 создана база данных, в ней...

Для подключения базы postgresql нужно указывать путь?
Доброго времени суток. Подскажите для подключения базы postgresql нужно указывать путь? Или хватит...

Модуль, плагин или библиотека для подключения стороней программы к БД PostgreSQL
Добрый день. На windows машине установлен Apache. В папке /Apache/cgi-bin, есть mapserv.exe А в...

Ошибка, Lazarus и PostgreSQL
Люди помогите, установил Lazarus 9.30.4 под Виндой и не могу подключится к PostgeSQL. Точнее:...

2
sau
2021 / 1634 / 271
Регистрация: 22.07.2011
Сообщений: 6,206
Завершенные тесты: 1
12.02.2018, 16:53 2
type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" , type="Npgsql.NpgsqlFactory, Npgsql"
- указанные типы точно есть в вашей версии Npgsql.EntityFramework ?
- а сборки npgsql после компиляции проекта в bin присутствуют ?
- в общем , это проблема из области конфигурации зависимостей , get_ProviderFactory не находит в сборках указанный тип , переустановите актуальные версии , пересоберите проект.
так очевидных ошибок в коде не наблюдается.
1
dima19972525
2 / 2 / 1
Регистрация: 26.04.2016
Сообщений: 68
13.02.2018, 20:04  [ТС] 3
Я нашел причину: вся работа с бд полетела, когда я установил пакет elmah.postgres. Но мне этот пакет нужен, для хранения информации ошибок в базе. Может, можно его как-то настроить в web.config файле, чтобы он не мешал?

Добавлено через 17 часов 36 минут
Решил проблему, заменив пакет elmah.postgresql на elmah.postgresql.as.dependency
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2018, 20:04

Ошибка в остановке postgresql
postgresql работает нормально, но при попытке остановить ее получаю следующее: 1) Через кнопку...

Ошибка при установке postgresql
Привет! Вот такая штука появляется при попытке установить postgresql-9.3.4-3-windows-x64.exe ...

Ошибка при установке postgresql
Доброго времени суток, сегодня переустановил винду и начал переустанавливать PostgreSQL и в конце...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru