1

シンプルな Web API を作成しました。IE からこれにアクセスすると、Web API は期待どおりの結果を返します。ただし、httpclient を使用して Web フォーム アプリケーションから同じ Web API にアクセスしようとしました。しかし、今は 404 エラーが発生します。しかし、ブラウザを使用すると結果を受け取るので、API は機能しているようです。何がうまくいかないのですか?これはコードです:

 HttpClientHandler handler = new HttpClientHandler()
 {
     UseDefaultCredentials = true
 };

 HttpClient client = new HttpClient(handler);
 client.BaseAddress = new Uri("http://server/appdir");
 client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

 HttpResponseMessage response = client.GetAsync("/api/environment").Result;
4

3 に答える 3

2

これが機能したコードです。

 HttpClientHandler handler = new HttpClientHandler()
 {
     UseDefaultCredentials = true
 };

 HttpClient client = new HttpClient(handler);

 client.BaseAddress = new Uri("http://eetmws10v");

 client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

 HttpResponseMessage response = client.GetAsync("/aim2/api/environment").Result;
于 2013-10-22T07:38:09.263 に答える
1

わお。今週末、同じエラーが発生しましたが、問題の原因がどれほど薄弱であったか想像できません。

これは私のために働いたものです:

string _baseAddress = "http://localhost/webapi/";
string controllerURL = "api/School";

client.BaseAddress = new Uri(_baseAddress);
string result = client.GetStringAsync("controllerURL").Result.ToString();

404 エラーの原因となった _baseAddress と controllerURL の組み合わせは次のとおりです。

string _baseAddress = "http://localhost/webapi/";
string controllerURL = "/api/School";

また

string _baseAddress = "http://localhost/webapi";
string controllerURL = "api/School";

また

string _baseAddress = "http://localhost/webapi";
string controllerURL = "/api/School";

開発者の多くの有益な工数を浪費する可能性が高いこの不必要な厳格さを取り除くために、何かがすぐに行われることを心から願っています。

于 2014-12-21T11:36:22.547 に答える