0

IIS を使用して n 層アプリケーションを構築し、Web API を使用して RESTful サービスを提供しました。

残念ながら、アプリケーション ビューを起動したり、URL から Web サイトを実行したりすると、フィールドの 1 つが null であることを示す ArugmentException が発生して、機能する場合と失敗する場合があります。次に、保護として引数の例外を配置しましたが、明らかに、型フィールドが null であってはならないときに null として表示されます。

基本的な Web API テンプレートを使用したため、Global.asax.cs に次の行があります。

RouteConfig.RegisterRoutes(RouteTable.Routes);

次に呼び出します:

public class RouteConfig
  {
    public static void RegisterRoutes(RouteCollection routes)
    {
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

  routes.MapRoute(
      name: "Default",
      url: "{controller}/{action}/{id}",
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
  );
}

}`

ここで強調しておきたいのは、これは [ほぼ] Visual Studio/IIS Express 内で常に機能するということです。しかし、それを適切な IIS に、またはビジュアル スタジオ コンテキストの外部の IIS Express に実際に展開すると、不安定になり、機能しなくなります。

これまでのところ、次のことを試しました。

  • 見つけた ASP.NET 2.x への参照をすべて削除します (すべて .NET 4.5 上に構築されています)。
  • 以下を Web.Config に追加します。 <modules runAllManagedModulesForAllRequests="true" />

さらなるアイデアは大歓迎です。追加のコードが必要な場合はお知らせください。追加します (何が必要になるか正確にはわかりません)。

ありがとう

4

1 に答える 1

1

IIS で実行されている Web アプリをデバッグしてみます。これにより、IIS Express と IIS の違いは無視されます (適切です)。

実行中にプロセスにアタッチできますw3wp.exe(Visual Studio、デバッグ -> アタッチ)。

Debugger.Break()スタートアップ コードをデバッグするときは、Visual Studio がプロセスにアタッチできるように、一時的なヘルパーとしてへの呼び出しを含める必要がある場合があります。

于 2013-05-24T13:21:22.017 に答える