Member 12904374 Ответов: 0

Я запустил веб-сайт, и он показывает следующую ошибку


Ошибка сервера в приложении'/'.

Не удалось создать пользовательский экземпляр SQL Server из-за сбоя в получении пути к данным локального приложения пользователя. Пожалуйста, убедитесь, что у пользователя есть локальный профиль пользователя на компьютере. Соединение будет закрыто.

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

Сведения об исключении: System.Data.SqlClient.SqlException: не удалось создать пользовательский экземпляр SQL Server из-за сбоя в получении пути к данным локального приложения пользователя. Пожалуйста, убедитесь, что у пользователя есть локальный профиль пользователя на компьютере. Соединение будет закрыто.

Ошибка Источника:


Строка 31: con = new SqlConnection();
Строка 32: кон.Параметр connectionString = "источник данных= имя localhost\\именем sqlexpress,1433;ключевое слово attachdbfilename=в-гурукул.ко.в\\httpdocs\\папку App_Data\\Gurukuldata.МДФ;Комплексная безопасность=true;в пользовательский экземпляр=true в";
Строка 33: кон.Открыть();
Строка 34: }
Строка 35: public void ExecuteNonSelect(строковый запрос)

Исходный файл: c:\inetpub\vhosts\the-gurukul.co.in\httpdocs\App_Code\Class1.cs линия: 33

Что я уже пробовал:

мой файл класса выглядит следующим образом:
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

/// <summary>
/// Summary description for Class1
/// </summary>
public class Class1
{
    SqlConnection con;
    SqlCommand com;
    public SqlDataReader dr;
    public SqlDataAdapter da;
	public Class1()
	{
		//
		// TODO: Add constructor logic here
		//
	}
    public void ConnectClass1()
    {
        con = new SqlConnection();
        con.ConnectionString = "Data Source= localhost\\SQLEXPRESS,1433;AttachDbFilename=the-gurukul.co.in\\httpdocs\\App_Data\\Gurukuldata.mdf;Integrated Security=True;User Instance=True";
        con.Open();
    }
    public void ExecuteNonSelect(string query)
    {
        com = new SqlCommand();
        com.CommandText = query;
        com.Connection = con;
        com.ExecuteNonQuery();
    }
    public void ExecuteSelect(string query)
    {
        com = new SqlCommand();
        com.CommandText = query;
        com.Connection = con;
        dr = com.ExecuteReader();
    }
    public DataSet ExecuteSelect1(string query)
    {
        da = new SqlDataAdapter(query,con);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return (ds);
    }
}


и web. config как:
<?xml version="1.0" encoding="UTF-8"?>
<!--
    Please refer to machine.config.comments for a description and
    the default values of each configuration section.

    For a full documentation of the schema please refer to
    http://go.microsoft.com/fwlink/?LinkId=42127

    To improve performance, machine.config should contain only those
    settings that differ from their defaults.
-->
<configuration>
  <configSections>
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
			<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
				<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
				<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
					<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
					<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
					<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
					<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
				</sectionGroup>
			</sectionGroup>
		</sectionGroup>
  </configSections>
  <appSettings />
  <system.web>
    <!-- 
            Set compilation debug="true" to insert debugging 
            symbols into the compiled page. Because this 
            affects performance, set this value to true only 
            during development.
        -->
    <compilation debug="true" defaultLanguage="c#">
      <assemblies>
        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <!--   <add assembly="Microsoft.Office.Interop.Outlook, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C" />
    -->
      </assemblies>
    </compilation>
    <!--
            The <authentication> section enables configuration 
            of the security authentication mode used by 
            ASP.NET to identify an incoming user. 
        -->
    <!--
            The <customErrors> section enables configuration 
            of what to do if/when an unhandled error occurs 
            during the execution of a request. Specifically, 
            it enables developers to configure html error pages 
            to be displayed in place of a error stack trace.
-->
    <customErrors mode="Off" defaultRedirect="GenericErrorPage.htm">
      <error statusCode="403" redirect="NoAccess.htm" />
      <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>
    <pages>
      <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </controls>
    </pages>
    <httpHandlers>
      <remove verb="*" path="*.asmx" />
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
    </httpHandlers>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </httpModules>
  </system.web>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <providerOption name="CompilerVersion" value="v3.5" />
        <providerOption name="WarnAsError" value="false" />
      </compiler>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <providerOption name="CompilerVersion" value="v3.5" />
        <providerOption name="OptionInfer" value="true" />
        <providerOption name="WarnAsError" value="false" />
      </compiler>
    </compilers>
  </system.codedom>
  <!-- 
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules>
      <remove name="ScriptModule" />
      <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </modules>
    <handlers>
      <remove name="WebServiceHandlerFactory-Integrated" />
      <remove name="ScriptHandlerFactory" />
      <remove name="ScriptHandlerFactoryAppServices" />
      <remove name="ScriptResource" />
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <connectionStrings>

				<add name="ConnectionString" connectionString="Data Source=localhost\SQLEXPRESS,1433;AttachDbFilename=the-gurukul.co.in\httpdocs\App_Data\Gurukuldata.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>

	 <!-- <add name="LocalSqlServer" connectionString="Data Source=(LocalDB\V11.0;Initial Catalog=Gurukuldata; Integrated Security=SSPI;AttachDBFilename=~\\App_Data\\Gurukuldata.mdf; providerName="System.Data.SqlClient"/>
	   <add name="SQLEXPRESS" connectionString="Data Source=SQLEXPRESS;Initial Catalog=GurukuldataEXPRESS; Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Gurukuldata.mdf" providerName="System.Data.SqlClient"/>
	  -->
  </connectionStrings>
	
</configuration>

F-ES Sitecore

Пользовательский Сервер.MapPath для преобразования виртуального пути сайта (что-то вроде "~/App_Data/Gurukuldata.mdf") в правильный физический путь, необходимый в строке подключения. Google MapMath для конкретного кода.

Member 12904374

Я пробовал это сделать, но и это не сработало

Richard Deeming

Воспользуйся |DataDirectory| в вашей строке подключения для ссылки на App_Data папка-у вас уже есть закомментированная строка подключения, которая делает это.

<add name="ConnectionString" connectionString="Data Source=localhost\SQLEXPRESS,1433;AttachDbFilename=|DataDirectory|\Gurukuldata.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>


Кроме того, методы в Class1 заставит вас написать код, который уязвим для SQL-инъекция[^Вам нужно обновить их, чтобы разрешить параметризованные запросы, а затем срочно просмотреть любой код, использующий эти методы.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]

Member 12904374

Я тоже пробовал это сделать, но ничего не вышло

j snooze

попробуйте удалить пользовательский экземпляр=True, вам это не нужно. Я бы также рекомендовал изменить localhost\SQLExpress на .\SQLExpress

Member 12904374

Пробовал и это, но не получилось

0 Ответов