错误。在新的asp.net mvc4错误处理您的请求时发生错误,找不到sql server?

时间:2022-12-04 18:31:53

I created a new asp.net mvc4 application. I created then a controller Chat and a View Chat.

我创建了一个新的asp.net mvc4应用程序。我创建了一个控制器聊天和一个查看聊天。

 public class ChatController : Controller
    {
        //
        // GET: /Chat/

        public ActionResult Index()
        {
            return View();
        }

    }

I wont paste the chat view, because I dont think it has nothing to do with the error.

我不会粘贴聊天视图,因为我不认为它与错误无关。

In the LoginPartial.cshtml I have this:

在LoginPartial.cshtml中我有这个:

@if (Request.IsAuthenticated) {
    <text>
        Hello, @Html.ActionLink(User.Identity.Name, "Manage", "Account", routeValues: null, htmlAttributes: new { @class = "username", title = "Manage" })!
        @Html.ActionLink("Dashboard", "Index", "Dashboard", routeValues: null, htmlAttributes: new { id = "dashboard" })
        @Html.ActionLink("Chat", "Index", "Chat", routeValues: null, htmlAttributes: new { id = "chat" })

        @using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" })) {
            @Html.AntiForgeryToken()
            <a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
        }
    </text>
} else {
    <ul>
        <li>@Html.ActionLink("Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li>
        <li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
    </ul>
}

After browsing to the app and loging in, I click on chat and I get a: Error. An error occurred while processing your request.

浏览到应用程序并登录后,我点击聊天,我得到一个:错误。处理您的请求时发生错误。

By using NLog I got this, I dont really know what code is trying to connect to sql, because the chat controller does not have any server side code to do any query

通过使用NLog我得到了这个,我真的不知道什么代码试图连接到sql,因为聊天控制器没有任何服务器端代码来做任何查询

04/10/2013 20:17:44: System.Web.HttpException (0x80004005): Unable to connect to SQL Server database. ---> System.Data.SqlClient.SqlException (0x80131904): 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)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover)
   at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
   at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
   at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.Open()
   at System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString)
ClientConnectionId:00000000-0000-0000-0000-000000000000
   at System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString)
   at System.Web.Management.SqlServices.SetupApplicationServices(String server, String user, String password, Boolean trusted, String connectionString, String database, String dbFileName, SqlFeatures features, Boolean install)
   at System.Web.Management.SqlServices.Install(String database, String dbFileName, String connectionString)
   at System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(String fullFileName, String dataDir, String connectionString)
   at System.Web.DataAccess.SqlConnectionHelper.EnsureDBFile(String connectionString)
   at System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation)
   at System.Web.Security.SqlRoleProvider.GetRolesForUser(String username)
   at WebMatrix.WebData.SimpleRoleProvider.GetRolesForUser(String username)
   at System.Web.Security.RolePrincipal.IsInRole(String role)
   at System.Web.Configuration.AuthorizationRule.IsTheUserInAnyRole(StringCollection roles, IPrincipal principal)
   at System.Web.Configuration.AuthorizationRule.IsUserAllowed(IPrincipal user, String verb)
   at System.Web.Configuration.AuthorizationRuleCollection.IsUserAllowed(IPrincipal user, String verb)
   at System.Web.Security.UrlAuthorizationModule.OnEnter(Object source, EventArgs eventArgs)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

the web.config has this, I checked the App_data folder and the MDF file is there.

web.config有这个,我检查了App_data文件夹,MDF文件就在那里。

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-FullStackSampleApplication-20130404120217;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-FullStackSampleApplication-20130404120217.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>

UPDATE: By checking my web.config, I see that elmah.axd is protected depending on users and roles, but there is no role provider anywhere,

更新:通过检查我的web.config,我看到elmah.axd受到保护,具体取决于用户和角色,但在任何地方都没有角色提供程序,

  <location path="elmah.axd" inheritInChildApplications="false">
    <system.web>
      <httpHandlers>
        <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
      </httpHandlers>
      <authorization>
        <allow roles="admin" />
        <allow users="levalencia" />
        <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>

2 个解决方案

#1


9  

this is how I managed to solve the issue:

这就是我设法解决问题的方法:

  1. I put customErrors to Off.

    我将customErrors设置为Off。

    <customErrors mode="Off" defaultRedirect="~/Error/General">
        <error statusCode="404" redirect="~/Error/Http404"/>
        <error statusCode="403" redirect="~/Error/Http403"/>    
    </customErrors>
    
  2. Then I noticed it was trying to find a View Called Index.

    然后我注意到它试图找到一个View Called Index。

so I changed the loginpartial.cshtml to

所以我将loginpartial.cshtml更改为

  @Html.ActionLink("Chat", "Chat", "Chat", routeValues: null, htmlAttributes: new { id = "chat" })

My error was naming of controllers and views. about the sql server issue, I suppose its something else in the app somewhere that is on the logs.

我的错误是控制器和视图的命名。关于sql server问题,我想它在应用程序中的其他地方就是在日志上。

#2


1  

I resolved the issue to comment following authentication tag:

我解决了在身份验证标记后发表评论的问题:

   <authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />

#1


9  

this is how I managed to solve the issue:

这就是我设法解决问题的方法:

  1. I put customErrors to Off.

    我将customErrors设置为Off。

    <customErrors mode="Off" defaultRedirect="~/Error/General">
        <error statusCode="404" redirect="~/Error/Http404"/>
        <error statusCode="403" redirect="~/Error/Http403"/>    
    </customErrors>
    
  2. Then I noticed it was trying to find a View Called Index.

    然后我注意到它试图找到一个View Called Index。

so I changed the loginpartial.cshtml to

所以我将loginpartial.cshtml更改为

  @Html.ActionLink("Chat", "Chat", "Chat", routeValues: null, htmlAttributes: new { id = "chat" })

My error was naming of controllers and views. about the sql server issue, I suppose its something else in the app somewhere that is on the logs.

我的错误是控制器和视图的命名。关于sql server问题,我想它在应用程序中的其他地方就是在日志上。

#2


1  

I resolved the issue to comment following authentication tag:

我解决了在身份验证标记后发表评论的问题:

   <authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />