Я получаю ошибки при возврате данных из метода с использованием ссылок веб-сервисов - PullRequest
0 голосов
/ 07 ноября 2018

Я пишу свои веб-сервисы (asmx) как

[WebMethod]
//public List<Ahlam> GetBloodGroup(String gblood)
public DataSet GetBloodGroup(string gblood)
{
        string bloodgroup = gblood.ToString();
        string ApoloConn = ConfigurationManager.ConnectionStrings["ConnSApolo"].ConnectionString;

        SqlConnection con = new SqlConnection(ApoloConn);

        SqlCommand cmd = new SqlCommand("select name as 'NAME', blood_group as 'BLOOD GROUP', gender as 'GENDER' , city as 'CITY' , mobile as 'MOBILE' " +
            "from dontable where blood_group = @bloodgroup", con);
        cmd.Parameters.AddWithValue("@bloodgroup", bloodgroup);
        SqlDataAdapter da = new SqlDataAdapter();

        da.SelectCommand = cmd;
        DataSet ds1 = new DataSet();
        da.Fill(ds1);

        return ds1;
 }

А это кнопка Action, когда она нажимается для вызова функции в моем веб-сервисе

protected void search_bloodgroup_Click(object sender, EventArgs e)
{ 
      string bg = bloodlist.SelectedItem.Text;
      AhlamQueryGroup.AhlamQueryBloodSoapClient client = new 
      AhlamQueryGroup.AhlamQueryBloodSoapClient();

      DataSet set = client.GetBloodGroup(bg);
      gridview_Donate.DataSource = set;
}

Это в web.config моего проекта

<connectionStrings>
    <add name="ConnSApolo" 
         connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\ApoloDB.mdf;Integrated Security=True;" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

И это web.config в моем проекте веб-сервисов

<connectionStrings>
    <add name="ConnSApolo" 
         connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\ApoloDB.mdf;Integrated Security=True;" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

Когда я нажимаю кнопку, я получаю эту ошибку

System.Web.Services.Protocols.SoapException: серверу не удалось обработать запрос.

System.Data.SqlClient.SqlException: попытка присоединить базу данных с автоматическим именем для файла E: \ Ahlam \ BloodHospital_project \ Blood_Hospital_banks_project \ WebServices \ WebServices \ App_Data \ ApoloDB.mdf. База данных с тем же именем существует, или указанный файл не может быть открыт, или он находится на общем ресурсе UNC.

в System.Data.SqlClient.SqlInternalConnectionTds..ctor (идентичности DbConnectionPoolIdentity, SqlConnectionString connectionOptions, SqlCredential учетными данными, объект providerInfo, Строка новый_пароль, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool бассейн, Строка маркер доступа, BooleanapplyTransientFaultHandling)
в System.Data.SqlClient.SqlConnectionFactory.CreateConnection (параметры DbConnectionOptions, DbConnectionPoolKey poolKey, объект poolGroupProviderInfo, пул DbConnectionPool, DbConnection owningConnection, DbConnectionOptions userOptions) * 10 в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection (пул DbConnectionPool, DbConnection owningObject, параметры DbConnectionOptions, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
в System.Data.ProviderBase.DbConnectionPool.CreateObject (DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
в System.Data.ProviderBase.DbConnectionPool.UserCreateRequest (DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
в System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, логический onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal & connection) System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource 1 повтор, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal & соединение) в System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal (DbConnection externalConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 повтор, DbConnectionOptions userOptions) в System.Data.SqlClient.SqlConnection.TryOpenInner (TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 1 повторить) в System.Data.SqlClient.SqlConnection.Open () в System.Data.Common.DbDataAdapter.FillInternal (набор данных DataSet, DataTable [] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, команда IDbCommand, поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill (DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, команда IDbCommand, Поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill (DataSet dataSet) в WebServices.AhlamQueryBlood.GetBloodGroup (String gblood) в E: \ Ahlam \ BloodHospital_project \ Blood_Hospital_banks_project \ WebServices \ WebServices \ AhlamQueryBlood.asmx.cs: линия 40 --- Конец внутренней трассировки стека исключений --- Описание: An необработанное исключение произошло во время выполнения текущей сети запрос. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации о ошибка и откуда она возникла в коде.

Сведения об исключении: System.ServiceModel.FaultException: System.Web.Services.Protocols.SoapException: серверу не удалось обработать запрос. ---> System.Data.SqlClient.SqlException: попытка прикрепить базу данных с автоматическим именем для файлаE: \ Ahlam \ BloodHospital_project \ Blood_Hospital_banks_project \ WebServices \ WebServices \ App_Data \ ApoloDB.mdf не удалось. База данных с таким именем существует или указанный файл не может быть открыт, или он находится на общем ресурсе UNC. в System.Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity идентичность, SqlConnectionString connectionOptions, SqlCredential учетные данные, Object providerInfo, String newPassword, SecureString newSecurePassword, логическое перенаправленноеUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) в System.Data.SqlClient.SqlConnectionFactory.CreateConnection (DbConnectionOptions параметры, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection, владеющийConnection, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection (DbConnectionPool пул, параметры DbConnection owningObject, DbConnectionOptions, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionPool.CreateObject (DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) в System.Data.ProviderBase.DbConnectionPool.UserCreateRequest (DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) в System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal & connection) в System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource 1 повтор, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal & соединение) в System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal (DbConnection externalConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 повтор, DbConnectionOptions userOptions) в System.Data.SqlClient.SqlConnection.TryOpenInner (TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 1 повторить) в System.Data.SqlClient.SqlConnection.Open () в System.Data.Common.DbDataAdapter.FillInternal (набор данных DataSet, DataTable [] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, команда IDbCommand, поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill (DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, команда IDbCommand, Поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill (DataSet dataSet) в WebServices.AhlamQueryBlood.GetBloodGroup (String gblood) в E: \ Ahlam \ BloodHospital_project \ Blood_Hospital_banks_project \ WebServices \ WebServices \ AhlamQueryBlood.asmx.cs: линия 40 --- Конец внутренней трассировки стека исключений ---

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

Строка 53: Строка 54: общедоступный System.Data.DataSet GetBloodGroup (string gblood) {Строка 55: возвращение base.Channel.GetBloodGroup (gblood); Строка 56:} Строка 57:

Исходный файл: E: \ Ahlam \ BloodHospital_project \ Blood_Hospital_banks_project \ BloodBank \ BloodBank \ Connected Услуги \ AhlamQueryGroup \ Reference.cs Строка: 55

Трассировка стека:

[FaultException: System.Web.Services.Protocols.SoapException: Server не удалось обработать запрос. ---> System.Data.SqlClient.SqlException: попытка присоединить автоименование база данных для файла E: \ Ahlam \ BloodHospital_project \ Blood_Hospital_banks_project \ WebServices \ WebServices \ App_Data \ ApoloDB.mdf не удалось. База данных с таким именем существует или указанный файл не может быть открыт, или он находится на общем ресурсе UNC. в System.Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentityидентичность, SqlConnectionString connectionOptions, SqlCredential учетные данные, Object providerInfo, String newPassword, SecureString newSecurePassword, логическое перенаправленноеUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) в System.Data.SqlClient.SqlConnectionFactory.CreateConnection (DbConnectionOptions параметры, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection, владеющийConnection, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection (DbConnectionPool пул, параметры DbConnection owningObject, DbConnectionOptions, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionPool.CreateObject (DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) в System.Data.ProviderBase.DbConnectionPool.UserCreateRequest (DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) в System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal & connection) в System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource 1 повтор, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal & соединение) в System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal (DbConnection externalConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 повтор, DbConnectionOptions userOptions) в System.Data.SqlClient.SqlConnection.TryOpenInner (TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 1 повторить) в System.Data.SqlClient.SqlConnection.Open () в System.Data.Common.DbDataAdapter.FillInternal (набор данных DataSet, DataTable [] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, команда IDbCommand, поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill (DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, команда IDbCommand, Поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill (DataSet dataSet) в WebServices.AhlamQueryBlood.GetBloodGroup (String gblood) в E: \ Ahlam \ BloodHospital_project \ Blood_Hospital_banks_project \ WebServices \ WebServices \ AhlamQueryBlood.asmx.cs: линия 40 --- Конец внутренней трассировки стека исключений ---]
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (Шеззаде reqMsg, IMessage retMsg) + 153
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) + 336
BloodBank.AhlamQueryGroup.AhlamQueryBloodSoap.GetBloodGroup (String кровь) + 0
BloodBank.AhlamQueryGroup.AhlamQueryBloodSoapClient.GetBloodGroup (String кровь) в E: \ Ahlam \ BloodHospital_project \ Blood_Hospital_banks_project \ BloodBank \ BloodBank \ Connected Услуги \ AhlamQueryGroup \ Reference.cs: 55
BloodBank.FilterDonor.search_bloodgroup_Click (Отправитель объекта, EventArgs д) в E: \ Ahlam \ BloodHospital_project \ Blood_Hospital_banks_project \ BloodBank \ BloodBank \ FilterDonor.aspx.cs: 40 System.Web.UI.WebControls.Button.OnClick (EventArgs e) + 9669714
System.Web.UI.WebControls.Button.RaisePostBackEvent (String eventArgument) + 108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) + 12
System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, String eventArgument) + 15
System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) +35 System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)+ 3562at

это ссылка на мои веб-ссылки в моем проекте введите описание изображения здесь это веб-сервисы в проекте веб-сервисов в том же решении введите описание изображения здесь

Я попытался удалить connectionString из web.config в моем проекте веб-сервисов, но я получил другую ошибку введите описание изображения здесь когда я нажимаю продолжить, я получаю ту же первую ошибку

1 Ответ

0 голосов
/ 08 ноября 2018

Для имитации вопроса:

Первое, что вам нужно сделать, это ..

Создайте новый обычный проект (не проект веб-службы), затем запустите свою функцию, если она работает или нет.

public DataSet GetBloodGroup(string gblood)
{
        string bloodgroup = gblood.ToString();
        string ApoloConn = ConfigurationManager.ConnectionStrings["ConnSApolo"].ConnectionString;

        SqlConnection con = new SqlConnection(ApoloConn);

        SqlCommand cmd = new SqlCommand("select name as 'NAME', blood_group as 'BLOOD GROUP', gender as 'GENDER' , city as 'CITY' , mobile as 'MOBILE' " +
            "from dontable where blood_group = @bloodgroup", con);
        cmd.Parameters.AddWithValue("@bloodgroup", bloodgroup);
        SqlDataAdapter da = new SqlDataAdapter();

        da.SelectCommand = cmd;
        DataSet ds1 = new DataSet();
        da.Fill(ds1);

        return ds1;
 }

Что-то вроде:

DataSet dsSimulate = new DataSet();
dsSimulate = GetBloodGroup("YourbloodValueHere");

Затем запустите его в режиме отладки, чтобы получить и проверить ошибку.

Ваша ошибка произошла, и она говорит (You already has a database name). Попробуйте проверить, существует ли он или нет.

Напоминание:

Прежде чем вы сможете использовать и запустить Web Service, вы должны убедиться, что он работает в режиме обычной отладки.

Возможны два способа решения проблемы: либо ваша функция имеет ошибку, либо само развертывание при вызове веб-службы.

при добавлении веб-службы в ссылку на ваш проект:

Файл Web.Config (Project Calling the Web Service) Это должно выглядеть следующим образом после того, как вы добавили ссылку на развернутую ссылку на сервис в свой проект.

<client>
      <endpoint address="http://localhost:1750/Service1.asmx" binding="basicHttpBinding"
        bindingConfiguration="Service1Soap" contract="Service1.Service1Soap"
        name="Service1Soap" />
      <endpoint address="http://localhost:1750/Service1.asmx" binding="customBinding"
        bindingConfiguration="Service1Soap12" contract="Service1.Service1Soap"
        name="Service1Soap12" />
    </client>

В вашем коде:

 Service1.Service1SoapClient cli;

 protected void Page_Load(object sender, EventArgs e)
 {
    cli = new Service1.Service1SoapClient("Service1Soap12");
    cli.GetBloodGroup("BloodGourHere");//this line returns your DataSet
 }

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...