0

wsseヘッダーを必要とするこのサービスを次のように利用しようとしています

   <soapenv:Header>
  <wsse:Security soapenv:actor="AppID" soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
     <wsse:UsernameToken>
        <wsse:Username>domain1\UNM1</wsse:Username>
        <wsse:Password wsse:Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PWD1</wsse:Password>
     </wsse:UsernameToken>
  </wsse:Security>

私はプロキシを動的に作成しています

    string[] assemblyReferences = new string[3] { "System.Web.Services.dll", "System.Xml.dll", "Microsoft.Web.Services3.dll" };
        CompilerParameters parms = new CompilerParameters(assemblyReferences);
        CompilerResults results = provider1.CompileAssemblyFromDom(parms, unit1);

        if (results.Errors.Count > 0)
        {
            foreach (CompilerError oops in results.Errors)
            {
                Console.WriteLine("========Compiler error============");
                Console.WriteLine(oops.ErrorText);
            }
            return;
        }        


        //Invoke the web service method
        object o = results.CompiledAssembly.CreateInstance("DynamicServiceProxy.servicename");
        //object o = results.CompiledAssembly.CreateInstance("DynamicServiceProxy.WebService");

        Type t = o.GetType();
       BindingFlags bf = BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.DeclaredOnly;

        MethodInfo m = t.GetMethod("Methodname", bf);
     stroutput = (string) m.Invoke(o, new object[].....

これにヘッダーを渡すにはどうすればよいですか。私はいくつかの調査を行い、WSE 3.0をインストールし、service3のリファレンスを追加しました。ただし、tでRequestSoapContextまたはclientcredentialメソッドを取得できません。client(o)はWebServicesClientProtocolではなくsoaphttpclientprotocolから生成されており、これがすべての問題の原因であるはずです。助けてください。

また、プロキシを動的に生成するので、私が好きになることができるかどうかわかりません

       MessageServiceWse client = new MessageServiceWse()

また、wsseタイプについてもわかりません。これを定義する方法。VS2010を使用していることに注意してください

これは私の初めてのサービス経験ですので、明らかな間違いをした場合に備えて失礼します。専門家の助けが必要です。

4

1 に答える 1