2016-08-07 3 views
0

Я нашел похожие ситуации для этой ошибки в stackoverflow, однако, я думаю, что моя проблема другая, поскольку я не мог найти ответ.SqlException (0x80131904)

У меня есть сайт, который я строю дома и публикую на веб-хосте, где они также поставляют SQL Server для меня. Прямо сейчас я могу получить доступ к SQL Server для создания моего меню как на моем локальном компьютере, так и после публикации, так что меню успешно создается, когда мой сайт жив. Итак, я знаю, что строка подключения работает.

Теперь я создал страницу регистрации, а также страницу входа в систему, и оба работают нормально на моем локальном компьютере. Тем не менее, после публикации моей веб-хостинг, я пытаюсь зарегистрировать новый пользователь с моего сайта и получить эту ошибку, когда я ударил представить:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Вот дополнительная информация:

<connectionStrings> 
    <!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-ffbpools-20160214093044.mdf;Initial Catalog=aspnet-ffbpools-20160214093044;Integrated Security=True" providerName="System.Data.SqlClient" />--> 
    <add name="connstring" connectionString="Data Source=10.23.136.135,780;uid=MyUserName;pwd=~FakePassword1;Initial Catalog=DBaccess_PNM" /> 
    <add name="DBaccess_PNMEntities" connectionString="metadata=res://*/Models.SiteMenuEDModel.csdl|res://*/Models.SiteMenuEDModel.ssdl|res://*/Models.SiteMenuEDModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=10.23.136.135,780;initial catalog=DBaccess_PNM;persist security info=True;user id=MyUserName;password=~FakePassword1;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    <add name="DBaccess_PNMLoginDetails" connectionString="metadata=res://*/Models.LoginDetailsEDModel.csdl|res://*/Models.LoginDetailsEDModel.ssdl|res://*/Models.LoginDetailsEDModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=10.23.136.135,780;initial catalog=DBaccess_PNM;persist security info=True;user id=MyUserName;password=~FakePassword1;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

И вы упомянули DbContext, который сделал даже больше смысла, и я сделал еще несколько исследования и обнаружил, что мне нужно сделать некоторые миграции и следуя указания из других постов я пытался: PM> Enable-Миграция -EnableAutomaticMigrations

Но я получил ниже сообщение:

More than one context type was found in the assembly 'ffbpools'. 
To enable migrations for 'ffbpools.Models.ApplicationDbContext', use Enable-Migrations -ContextTypeName ffbpools.Models.ApplicationDbContext. 
To enable migrations for 'ffbpools.Models.DBaccess_PNMLoginDetails', use Enable-Migrations -ContextTypeName ffbpools.Models.DBaccess_PNMLoginDetails. 
To enable migrations for 'ffbpools.Models.DBaccess_PNMEntities', use Enable-Migrations -ContextTypeName ffbpools.Models.DBaccess_PNMEntities. 

Следуя указаниям, которые я сделал следующую команду и получили результаты:

PM> Enable-Migrations -ContextTypeName ffbpools.Models.ApplicationDbContext 
Checking if the context targets an existing database... 
Code First Migrations enabled for project ffbpools. 

Я думал, что я был хорошо на моем пути, пока я не сделал:

PM> Enable-Migrations -ContextTypeName ffbpools.Models.DBaccess_PNMLoginDetails 
Migrations have already been enabled in project 'ffbpools'. To overwrite the existing migrations configuration, use the -Force parameter. 

Я попробовал Силу и получил:

PM> Enable-Migrations -Force -ContextTypeName ffbpools.Models.DBaccess_PNMLoginDetails 
Checking if the context targets an existing database... 
System.NotSupportedException: Creating a DbModelBuilder or writing the EDMX from a DbContext created using Database First or Model First is not supported. EDMX can only be obtained from a Code First DbContext created without using an existing DbCompiledModel. 
    at System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(DbContext context, XmlWriter writer) 
    at System.Data.Entity.Utilities.DbContextExtensions.<>c__DisplayClass1.<GetModel>b__0(XmlWriter w) 
    at System.Data.Entity.Utilities.DbContextExtensions.GetModel(Action`1 writeXml) 
    at System.Data.Entity.Utilities.DbContextExtensions.GetModel(DbContext context) 
    at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistenceState existenceState, Boolean calledByCreateDatabase) 
    at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration) 
    at System.Data.Entity.Migrations.Design.MigrationScaffolder..ctor(DbMigrationsConfiguration migrationsConfiguration) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run() 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldInitialCreate(String language, String rootNamespace) 
    at System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() 
    at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 
Creating a DbModelBuilder or writing the EDMX from a DbContext created using Database First or Model First is not supported. EDMX can only be obtained from a Code First DbContext created without using an existing DbCompiledModel. 

Глядя сюда, я нашел эту ссылку: http://forums.asp.net/t/1975675.aspx?Enable+Migrations+says+More+than+one+context+type+was+found+in+the+assembly+ScheduleWeb+ и, похоже, я могу объединить DBaccess_PNMLoginDetails, DBaccess_PNMEntities и ApplicationDbContext в один dbcontext? Не уверен, что это правильно! ApplicationDbContext - это то, что, я считаю, я добавил сначала, когда я изначально решил начать изучение MVC. Я понимаю, как объединение DBaccess_PNMLoginDetails, DBaccess_PNMEntities в один DbContext можно использовать что-то, как легко, как:

public class MainDBContext : DbContext 

    { 
      public DbSet<DBaccess_PNMLoginDetails> DBaccess_PNMLoginDetails { get; set; } 
      public DbSet<DBaccess_PNMEntities > DBaccess_PNMEntities { get; set; } 
    } 

но ApplicationDbContext отличается и и поэтому я думаю, что это из-за кода, который я нашел.

public partial class DBaccess_PNMLoginDetails : DbContext 
{ 
    public DBaccess_PNMLoginDetails() 
     : base("name=DBaccess_PNMLoginDetails") 
    { 
    } 

Bunch of stuff in here 
} 

И ..

public partial class DBaccess_PNMEntities : DbContext 
    { 
public DBaccess_PNMEntities() 
      : base("name=DBaccess_PNMEntities") 
     { 
     } 

    Bunch of stuff in here 
    } 

ApplicationDbContext не имеет ничего подобного, но все три создали такое же пространство имен ffbpools. Вот что у меня есть для ApplicationDbContext:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
    { 
     public ApplicationDbContext() 
      : base("DefaultConnection", throwIfV1Schema: false) 
     { 
     } 

     public static ApplicationDbContext Create() 
     { 
      return new ApplicationDbContext(); 
     } 
    } 

Я надеюсь, что я объяснил это достаточно хорошо .......

Может кто-то пожалуйста, помогите мне решить эту проблему?

+0

Если ваше меню управляется данными, и это работает, единственным объяснением является то, что эти другие операции получают информацию о подключении в другом месте. – Crowcoder

+0

Спасибо за ответ .... Да, меню - данные, управляемые из таблицы SQL Server, и работает на моей локальной машине, а также после публикации ее на веб-хосте. Я могу зарегистрироваться и сделать логин с моего локального. Только после публикации веб-сайта веб-хостинга я больше не могу регистрироваться или регистрироваться. У меня нет специального кода для определения, когда я нахожусь на локальном или на веб-хосте, так как они могут получать информацию о подключении из другого места? –

+0

Отлаживайте и входите туда, где вы создаете dbcontext для входа в систему, а затем проверяете его свойства соединения. – Crowcoder

ответ

0

Это связано с тем, что я все еще учился и путался, так как я нашел разные ответы, не понимая, что они не относятся к тому, что я хочу делать, что создает интернет-сайт. Не интрасеть, а не код в первую очередь.

В любом случае, я в конечном итоге объединил свои файлы контекста и начал работать назад, чтобы проверить, что я пишу код для БД сначала и для интернет-сайта.

Смежные вопросы