1

我想使用受 htaccess 保护的 C# 中的 php Webservice。我通过在我的 VS 2010 中添加 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 在我的最后一行显示一个名为 400 Bad REquest 的错误。如果我删除服务器上的 .htaccess 文件,pgm 工作正常,但我无法删除。因为其他 PHP 用户使用该服务。

谁能告诉我如何正确发送凭据?

由乔

4

2 回答 2

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 回答
0

有时 C# 和 Apache 会发生一些冲突:在这种情况下,可能是100 Continue由于身份验证处于活动状态,您的客户端期待响应,但服务器没有发送它。

这种行为由这一行切换:

ServicePointManager.Expect100Continue = false;

在执行请求之前添加它。

还值得指出的是,当400 bad request发生这种情况时,您可能会在服务器的日志中找到一些有用的详细信息。

于 2012-08-13T15:23:34.857 回答