Я запустил веб-сайт, и он показывает следующую ошибку
Ошибка сервера в приложении'/'.
Не удалось создать пользовательский экземпляр 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
Пробовал и это, но не получилось