Ошибка файла Web.config - PullRequest
       16

Ошибка файла Web.config

4 голосов
/ 19 апреля 2011

Я хостирую сайт через godaddy.com, и это ссылка:

http://floridaroadrunners.com/

, и это мой файл web.config:

 <?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />

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

<customErrors mode="Off"/>

    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>

    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>

    <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>

  </system.web>

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

Я получаю ошибку во время выполнения:

Ошибка во время выполнения

Описание: на сервере произошла ошибка приложения.Текущие пользовательские настройки ошибок для этого приложения не позволяют удаленно просматривать подробности ошибки приложения (из соображений безопасности).Однако его могут просматривать браузеры, работающие на локальном сервере.

Я также установил режим customErrors = "off".Что здесь не так?Я использую Visual Studio 2010 с 4.0 Framework в нем.Спасибо!

Ответы [ 4 ]

2 голосов
/ 19 апреля 2011

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

Есть несколько вариантов.Во-первых, попробуйте Elmah

Во-вторых, вы можете использовать свою библиотеку журналов (мне нравится NLog, но любая будет работать), и перехватить событие Application_Error в Global.asax.cs.

protected void Application_Error(object sender, EventArgs e)
        {
            //first, find the exception.  any exceptions caught here will be wrapped
            //by an httpunhandledexception, which doesn't realy help us, so we'll
            //try to get the inner exception
            Exception exception = Server.GetLastError();
            if (exception.GetType() == typeof(HttpUnhandledException) && exception.InnerException != null)
            {
                exception = exception.InnerException;
            }

            //get a logger from the container
            ILogger logger = ObjectFactory.GetInstance<ILogger>();
            //log it
            logger.FatalException("Global Exception", exception);
        }

Это хорошая функция, которая не имеет значения, даже если вы можете отключить customErrors.

1 голос
/ 19 апреля 2011

Сервер machine.config или applicationHost.config, вероятно, переопределяет ваши web.config настройки.К сожалению, в этом случае вы ничего не сможете сделать, если не будете обращаться в службу поддержки GoDaddy.

0 голосов
/ 19 апреля 2011

Вы можете отловить ошибку в вашем Global.asax и отправить электронное письмо с исключением.

В Global.asax.cs:

 void Application_Error(object sender, EventArgs e)
        {
            // Code that runs when an unhandled error occurs
            Exception ex = Server.GetLastError();
            ExceptionHandler.SendExceptionEmail(ex, "Unhandled", this.User.Identity.Name, this.Request.RawUrl);
            Response.Redirect("~/ErrorPage.aspx"); // So the user does not see the ASP.net Error Message
        }

Мой метод в классе My ExceptionHandler:

class ExceptionHandler
    {
        public static void SendExceptionEmail(Exception ex, string ErrorLocation, string UserName, string url)
        {
            SmtpClient mailclient = new SmtpClient();
            try
            {
                string errorMessage = string.Format("User: {0}\r\nURL: {1}\r\n=====================\r\n{2}", UserName, url, AddExceptionText(ex));
                mailclient.Send(ConfigurationManager.AppSettings["ErrorFromEmailAddress"],
                                ConfigurationManager.AppSettings["ErrorEmailAddress"],
                                ConfigurationManager.AppSettings["ErrorEmailSubject"] + " = " + ErrorLocation,
                                errorMessage);
            }
            catch { }
            finally { mailclient.Dispose(); }
        }

        private static string AddExceptionText(Exception ex)
        {
            string innermessage = string.Empty;
            if (ex.InnerException != null)
            {
                innermessage = string.Format("=======InnerException====== \r\n{0}", ExceptionHandler.AddExceptionText(ex.InnerException));
            }
            string message = string.Format("Message: {0}\r\nSource: {1}\r\nStack:\r\n{2}\r\n\r\n{3}", ex.Message, ex.Source, ex.StackTrace, innermessage);
            return message;
        }
    }
0 голосов
/ 19 апреля 2011

customErrors mode значение Off чувствительно к регистру, я думаю. Пожалуйста, убедитесь, что у вас первый символ с большой буквы.

...