我想使用来自C#的php Webservice,它受到htaccess的保护。 我通过在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用户使用该服务。
有人能告诉我如何正确发送证书吗?
通过jo
答案 0 :(得分:0)
根据MSDN,您不需要凭据缓存:
// Set the client-side credentials using the Credentials property.
ICredentials credentials = new NetworkCredential("Joe",SecurelyStoredPassword,"mydomain");
math.Credentials = credentials;
您是否尝试过此方法而不是缓存对象?可以找到更多信息here。
答案 1 :(得分:0)
有时C#和Apache发生冲突:在这种情况下,由于身份验证处于活动状态,可能是您的客户端期待100 Continue
响应,但服务器不会发送它。
这种行为被这一行切换:
ServicePointManager.Expect100Continue = false;
在执行请求之前添加它。
值得指出的是,当400 bad request
发生时,您可能会在服务器日志中找到一些有用的详细信息。