■14500 / inTopicNo.6) |
Re[5]: HttpWebRequest のエラーについて |
□投稿者/ 七曜 (75回)-(2008/02/20(Wed) 11:19:52)
|
■No14466 (yama さん) に返信
検証環境:Windows Vista (Enterprise)、IIS7.0、VS2008
アプリケーション設定:Windows認証=有効、その他の認証=無効
物理ファイルへのアクセス権:NetworkCredentialで設定しているユーザーにアクセス権あり
[ConsoleApp側Source]
NetworkCredential credential = new NetworkCredential("username", "password", "domain");
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri("http://localhost"), "NTLM", credential);
//String Url = "http://localhost:51450/WebSite1/Service.asmx/HelloWorld";
//String Url = "http://localhost:51450/WebSite1/Service.asmx/Method1";
String Url = "http://localhost/WebSite1/Service.asmx/Method1";
byte[] postdata = Encoding.UTF8.GetBytes("param=aaaa");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.Accept = "text/javascript, text/html, application/xml, text/xml, */*";
request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
request.ContentLength = postdata.Length;
request.UseDefaultCredentials = false;
request.Credentials = credential;
//request.Credentials = credentialCache.GetCredential(new Uri("http://localhost"), "NTLM");
using (Stream writer = request.GetRequestStream())
{
writer.Write(postdata, 0, postdata.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
String responseValue = String.Empty;
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
responseValue = reader.ReadToEnd();
}
}
Console.WriteLine(responseValue);
Console.Read();
[Web Service側]
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
[WebMethod]
public string Method1(string param)
{
return param;
}
[実行結果]
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">aaaa</string>
IISのWindows認証で通らないユーザーを設定した場合には、HTTP Statusは401でした。
HTTP Status 403もアクセス権関連だったかと思うので、アクセス権周りを確認すれば良い気がしますけど・・・。
ちなみに、ConsoleAppをデバッグ実行し、Exceptionの発生した際のInnerExceptionやらStackTraceやらを見ると
追加情報を得られるかと思います。
|
|