1

OData アプリケーションを自己ホストしています。これには現在、多くのハードコーディングが含まれています: 私の DataService クラス自体では:

public static void InitializeService(
           DataServiceConfiguration config)
        {
            // Provide read-only access to all entries and feeds. 
            config.SetEntitySetAccessRule(
               "*", EntitySetRights.AllRead);
            config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead);

            config.UseVerboseErrors = true;
            config.DataServiceBehavior.MaxProtocolVersion = System.Data.Services.Common.DataServiceProtocolVersion.V2;
        }

そして初期化するとき:

 Type servicetype = typeof(MessageDataService);
 Uri baseaddress = new Uri("http://localhost:8000/messageData");
 Uri[] baseaddresses = new Uri[] { baseaddress };
 using ( DataServiceHost dshost = new DataServiceHost(servicetype, baseaddresses))
 {
   dshost.Open();
   //blah
 }

これは「yuk」で十分要約できると思います。を介して他の WCF サービスを適切に構成できるようになりましApp.configた。データ サービスにもすぐに使用できるものはありますか? それとも、独自の構成クラスを展開する必要がありますか?

4

2 に答える 2

3

app.config ですべての構成を行うことができます。少し厄介です...:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="MyBindingName" >
          <security mode="Transport">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="{you service type name including the namespace i.e. myapplication.myservice}">
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="MyBindingName" contract="System.Data.Services.IRequestHandler">
        </endpoint>
      </service>
    </services>
  </system.serviceModel>
</configuration>

コードでは、特定の URL なしでホストをインスタンス化します。通常どおり構成から選択します。

var host = new DataServiceHost(typeof(YourServiceType), new Uri[0]);

詳細な回答については、この質問を参照してください。

于 2013-03-15T07:45:19.987 に答える
1

WCF Data Servicesは現在、構成ファイルから構成を読み取りません。したがって、独自のソリューションを展開することが道です。

于 2012-10-30T20:43:49.833 に答える