私はWeb APIの初心者です。カスタムの名前付きアクションを使用して Web Api コントローラーを作成します。HttpClient を使用して WPF クライアントからこれを呼び出しています。しかし、エラー 応答ステータス コードが成功を示していません 404 (Not Found) が表示されます。
これが私のWeb APIコントローラーです:
public class ActivationController : ApiController
{
private readonly IActivationUnit _activationUnit;
public ActivationController()
{
_activationUnit = new ActivationUnit();
}
// api/activation/GetAllActivisionInformations
public HttpResponseMessage GetAllActivationInformations(string username)
{
return Request.CreateResponse(HttpStatusCode.OK, _activationUnit.ActivationRepository.GetActivationInformations(username));
}
// api/activation/NewLicense
[HttpPost]
public HttpResponseMessage PostNewLicense(LicenseMetadata licenseMetadata)
{
bool isSuccess = _activationUnit.ActivationRepository.NewLicense(licenseMetadata.Username, licenseMetadata.ActivisionInformation);
if (isSuccess)
{
try
{
_activationUnit.Save();
}
catch (Exception)
{
isSuccess = false;
}
}
return Request.CreateResponse(isSuccess ? HttpStatusCode.OK : HttpStatusCode.BadRequest, isSuccess);
}
}
私のルーティングは:
// Route for POST method
config.Routes.MapHttpRoute(
name: "DefaultApi2",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Route GET method
config.Routes.MapHttpRoute(
name: "DefaultApi1",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "get", id = RouteParameter.Optional }
);
私のクライアントコードは:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:42471");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var licenseMetadata = new LicenseMetadata
{
ActivisionInformation = new ActivisionInformation(),
Username = "UserName"
};
var response = await client.PostAsJsonAsync("api/activation/NewLicense", licenseMetadata);
try
{
response.EnsureSuccessStatusCode();
MessageBox.Show("Success");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
HttpClient を使用してサーバーに要求を送信すると、応答ステータス コードが成功を示していない 404 (見つかりません)
URL「api/activation/newlicense」を「api/activation/PostNewLicense」に変更しようとしましたが、この場合は取得します
応答ステータス コードが成功を示していない 500 (Internal Server Error)フォーム HttpClient
私が間違っているところ。私はすでに2日を費やしています。
使用しています: Visual Studio 2012、.NET 4、MVC 4、Windows 8、IIS 8