1

htaccessで保護されているC#のphpWebサービスを利用したい。VS2010にWeb参照を追加してサービスを追加しました。

mywsfromwsdl myws = new mywsfromwsdl();

System.Net.CredentialCache myCredentials = new System.Net.CredentialCache();
NetworkCredential netCred = new NetworkCredential("user", "pass");
myCredentials.Add(new Uri(myws.Url), "Basic", netCred);
myws.Credentials = myCredentials;
myws.PreAuthenticate = true;

tbxIN.Text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> "+
            " <test> "+
            " <parm1>4</parm1>  "+
            " <parm1>2</parm1>  "+
            "  </test>";

tbxOUT.Text= myws.func1(tbxIN.Text.ToString());

VSは、最後の行で400BadREquestというエラーを示しています。サーバー上の.htaccessファイルを削除すると、pgmは正常に機能しますが、削除できません。他のPHPユーザーがサービスを使用しているためです。

クレデンシャルを正しく送信する方法を教えてもらえますか?

ジョーによって

4

2 に答える 2

0

C#とApacheが少し衝突することがあります。この場合、100 Continue認証がアクティブであるためにクライアントが応答を期待している可能性がありますが、サーバーはそれを送信しません。

この種の動作は、次の行によって切り替えられます。

ServicePointManager.Expect100Continue = false;

リクエストを実行する前に追加してください。

400 bad requestまた、発生した場合、サーバーのログに役立つ詳細が見つかる可能性があることも指摘しておく価値があります。

于 2012-08-13T15:23:34.857 に答える
0

MSDN によると、資格情報キャッシュは必要ありません。

 // Set the client-side credentials using the Credentials property.
 ICredentials credentials = new NetworkCredential("Joe",SecurelyStoredPassword,"mydomain");
 math.Credentials = credentials;

キャッシュ オブジェクトの代わりにこのメソッドを試しましたか? 詳細については、こちらをご覧ください

于 2012-08-13T13:42:43.817 に答える