Ich habe versucht, einen OData-Dienst zu implementieren, der auf einem Entity-Framework-Modell basiert, bei dem die Authentifizierung von Sql Azure bereitgestellt wird. Ich biete Zeilen-/Spaltenzugriff innerhalb der Datenbank.
Ich möchte in der Lage sein, dies von LinqPad, Excel usw. als einen sicheren Dienst aufzurufen.
Ich habe die verschiedenen Schemata ausprobiert, die in der Standardreihe aber obwohl 401 zurückgegeben wird, rufen weder Excel noch LinqPad mit dem eingegebenen Benutzernamen und Kennwort zurück.
Also dachte ich, ich würde den Benutzernamen/das Kennwort zu einem Abfrageparameter (über SSL) machen. Aber es stellt sich heraus, dass das auch illegal ist (OData erfordert eine gut geformte URL ohne Abfrageparameter).
Also dann dachte ich, warum nicht WebGet verwenden, um den Benutzernamen und das Kennwort in der URL einbetten, aber ich kann nicht bekommen, dass mit dem OData-Quellformat in WCF zu arbeiten:
<%@ ServiceHost Language="C#" Factory="System.Data.Services.DataServiceHostFactory, System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Service="WebApplication5.OData" %>
public class OData : DataService< MyEntities >
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
protected override MyEntities CreateDataSource()
{
// create the OData source with the user name and password here
}
}
Hat jemand tatsächlich bekommen OData zu arbeiten, wo der Benutzername und das Kennwort in die Quelle übergeben werden?