2016-08-29 18 views
2

私はいくつかの見た目をしていて、私が経験している問題に似ているものに遭遇していないので、ここに投げ捨てて、WebAPIリクエストで404エラーが発生しました...同じリクエストで

コントローラとメソッドが設定されています。

public class BoothAPIController : ITApiControllerBase 
{ 
    [HttpGet] 
    public HttpResponseMessage GetActiveAssetNumbersLike([FromUri] String id) 
    { 
     HttpResponseMessage ret; 

     // ... do some processing 

     return ret; 
    } 
} 

ルートが...しかし、このいずれかをGlobal.asaxの

protected void Application_Start(object sender, EventArgs e) 
{ 

    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
      name: "CustomApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional }); 


    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
      name: "BoothWithDateAPI", 
      routeTemplate: "api/{controller}/{boothID}/{year}/{month}/{day}"); 

    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional }); 

} 

に設定し、これら2つの要求を完璧に実行...

http://localhost:52211/api/BoothAPI/GetActiveAssetNumbersLike/PR 
http://localhost:52211/api/BoothAPI/GetActiveAssetNumbersLike/PRN0 

さは404エラーを返します。 ..

http://localhost:52211/api/BoothAPI/GetActiveAssetNumbersLike/PRN 

成功した要求が

Cache-Control →no-cache 
Content-Length →7731 
Content-Type →application/json; charset=utf-8 
Date →Mon, 29 Aug 2016 13:13:43 GMT 
Expires →-1 
Pragma →no-cache 
Server →Microsoft-IIS/8.0 
X-AspNet-Version →4.0.30319 
X-Powered-By →ASP.NET 
X-SourceFiles → [string] 

(肩をすくめる)のように見えますが失敗した要求は、私は、パラメータで1つの変更を行い、なぜ私は完全に途方に暮れています...知らんよ...のように

Cache-Control →private 
Content-Length →2879 
Content-Type →text/html; charset=utf-8 
Date →Mon, 29 Aug 2016 12:53:08 GMT 
Server →Microsoft-IIS/8.0 
X-AspNet-Version →4.0.30319 
X-Powered-By →ASP.NET 
X-SourceFiles →= [string] 

に見えます差。

+0

Content-Typeの違いがあります。それが失敗すると、text/htmlを送信しています。これらのリクエストはどのように送っていますか?アプリケーション経由で、あるいは多分郵便配達員経由でですか? – jpgrassi

+0

また、なぜGlobal.asaxでルートを設定していますか? App_StartフォルダにWebApiConfigファイルがありませんか? – jpgrassi

+0

リクエストが同一で、郵便配達員から送信されました。パラメータ文字列のみが異なります。限り、Global.asax ...現時点では便利です。私は構成がたくさんあるわけではないので、それを分解する必要はありませんでした。アプリケーションが大きくなるにつれて、それを少しリファクタリングするかもしれません。 –

答えて

2

私はこれを少し掘り下げて自分自身を驚かせました。あなたがPRNを送信しようとしているパラメータは以下MS-DOS Device Driver

の予約語であると判明すると、デフォルトのデバイスドライバ名のリストです。

PRNシステムリストデバイス、通常はパラレルポート

は、この質問は、問題の答えがあります: IIS gives 404 when MS-DOS reserved names are used in parameters values

をしかし、あなたはtrueにRelaxedUrlToFileSystemMappingを設定する際に電位の落とし穴に注意する必要があります。 Experiments in Wackiness: Allowing percents, angle-brackets, and other naughty things in the ASP.NET/IIS Request URL

+0

ありがとうございます!これは問題を解決しましたが、なぜこれらの予約された名前がWebサービスと何か関係があるとは想像できません。 –

+0

これらはファイルシステムに関連しています。私が提出したリンクは、その理由を詳細に説明しています。毎日学ぶべきことの一つ! – jpgrassi

関連する問題