0

tl; dr

以下は、SharePointでのファイル操作を簡素化するクラスライブラリのapp.configです。アドレスはendpoint任意のサイトを指しますが、ライブラリが使用されると、正しいサイトに動的に設定されます。

任意のアドレスが変更/存在しなくなった場合でも、DLLは機能しますか?

クラスライブラリをパッケージ化して、ライブラリを参照するプロジェクトに「」endpointbinding 」を動的に追加できますか(対話するサイトに基づいて)?


詳細

コピーおよびリストWebサービスを介したSharePointサイトへのアクセスを簡素化するために、C#でクラスライブラリを作成しました。エンドユーザーは、サイトのURLやその他のデータを渡すことで、SharePointのファイルを簡単にアップロード、ダウンロード、および操作できます。彼らがサイトのURLを渡すとき、私はそのURLを使用するようにコピーまたはリスト参照を動的に設定します。これはうまくいきますが、2つの質問があります。

  1. 開発時にWebサービスの詳細を取得するには、app.config/web.configに1つのSharePointサーバーへの参照を含める必要があります。そのURLが変更されたり、存在しなくなったりした場合、ライブラリは失敗しますか?

  2. 参照時にDLLが含まれていても、アドレスbasicHttpBindingendpointアドレスを含むapp.configは含まれていません。クラスライブラリを使用しているプロジェクトのweb.config/app.configにそのデータを追加する方法はありますか?


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
  </appSettings>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="CopySoap" maxReceivedMessageSize="419430400">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
        <binding name="ListsSoap">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://www.example.com/subsite/_vti_bin/copy.asmx"
          binding="basicHttpBinding" bindingConfiguration="CopySoap"
          contract="CopyService.CopySoap" name="CopySoap" />
      <endpoint address="http://www.example.com/subsite/_vti_bin/Lists.asmx"
          binding="basicHttpBinding" bindingConfiguration="ListsSoap"
          contract="ListsService.ListsSoap" name="ListsSoap" />
    </client>
  </system.serviceModel>
</configuration>

御時間ありがとうございます。

4

1 に答える 1

1

私の答え

  1. App.Configで記述している場合、ハードコーディングする方法はありません。これは設定ファイルです。いつでも変更でき、プロジェクトを再構築する必要はありません。機能を続行する前に、サイト/サーバーが存在するかどうかを確認してください。サーバー/サイトが存在しない場合-適切に処理し、適切なメッセージを表示して、ユーザーが構成ファイルを変更して正しいサーバーを指すようにします。

  2. 「参照プロジェクト」のWebまたはapp.configに、サービスに必要な構成を追加するだけです。DLLは参照プロジェクトのコンテキストで実行されているため、app/web.configから必要な値をpcikします。

于 2013-02-22T11:06:43.600 に答える