0

IIS6上の.NETFramework4.0 WCF RESTサービスを、次の接続文字列を使用してSQL Server2008R2データベースに接続しようとしています。

<add name="EReportEntities" 
     connectionString="metadata=res://*/EReportModel.csdl|res://*/EReportModel.ssdl|res://*/EReportModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Server=localhost;Database=ADM;User Id=sa;Password=XXXXXXXX;multipleactiveresultsets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

しかし、私はできません。私は得る:

Event Type: Failure Audit
Event Source:   MSSQLSERVER
Event Category: (4)
Event ID:   18456
Date:       10/19/2012
Time:       10:47:48 AM
User:       N/A
Computer:   UNILEVER
Description:
Login failed for user 'sa'. [CLIENT: <local machine>]

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Data:
0000: 18 48 00 00 0e 00 00 00   .H......
0008: 09 00 00 00 55 00 4e 00   ....U.N.
0010: 49 00 4c 00 45 00 56 00   I.L.E.V.
0018: 45 00 52 00 00 00 07 00   E.R.....
0020: 00 00 6d 00 61 00 73 00   ..m.a.s.
0028: 74 00 65 00 72 00 00 00   t.e.r...

ただし、saユーザーを使用してSQL Server Management Studioにログインすると、ログインできます。

私は何が間違っているのですか?

4

2 に答える 2

1

接続文字列がを指していることを考えると、WCFサービスが接続できないことは驚くことではありませんlocalhost

connectionString="metadata=res://*/EReportModel.csdl|res://*/EReportModel.ssdl|res://*/EReportModel.msl;
provider=System.Data.SqlClient;
provider connection string=&quot;Server=localhost;
Database=ADM;
. . . 

私がよくお勧めするのは、WCFサービスをでラップし、try..catch問題が発生した場合は、接続文字列をエラーメッセージに追加して、サービス正しい接続文字列を使用していることを確認することです。

(私はweb.configいくつかの接続文字列を含んでいたことがありますが、私のEntity Framework / LINQ to SQLは間違ったものを使用することを決定しました。これはそのような場合を特定します。)

たとえば、単純なWCFサービスに使用するコードは次のとおりです。

public List<wsCustomer> GetAllCustomers()
{
    NorthwindDataContext dc = null;
    try
    {
        dc = new NorthwindDataContext();
        List<wsCustomer> results = new List<wsCustomer>();
        foreach (Customer cust in dc.Customers)
        {
            results.Add(new wsCustomer()
            {
                CustomerID = cust.CustomerID,
                CompanyName = cust.CompanyName,
                City = cust.City
            });
        }
        return results;
    }
    catch (Exception ex)
    {
        OutgoingWebResponseContext response = WebOperationContext.Current.OutgoingResponse;
        response.StatusCode = System.Net.HttpStatusCode.InternalServerError;
        response.StatusDescription = ex.Message.Replace("\r\n", "") + "  " + dc.Connection.ConnectionString;
        return null;
    }
}

このコードを使用すると、問題が発生した場合に、SQLServerエラーと使用しようとしたサーバー/データベースを確認できます。

エラーメッセージ

詳細はこちら: WCFの導入とトラブルシューティング

于 2016-04-28T07:36:12.153 に答える
0

http://www.connectionstrings.com/sql-server-2008で他の接続文字列バリアントを使用してみてください

于 2012-10-19T09:13:11.903 に答える