1

マデイ、この断続的なasp.net mvc例外を修正するためのアイデアや手がかりがあれば、このエラーがdbに記録されています。ありがとう

Unhandled System.Web.HttpException (0x80004005): A public action method 'undefined' was not found on controller '#######'.
   at System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
   at System.Web.Mvc.Controller.ExecuteCore()
   at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
   at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
   at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__4()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
   at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)    at System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
   at System.Web.Mvc.Controller.ExecuteCore()
   at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
   at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
   at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__4()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
   at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
4

2 に答える 2

1

確かなことは言えませんが、これは、変数が定義されていない JavaScript で URL が構築された結果であると思われます。

何かのようなもの:

var action
var url = '/myContoller/' + action

これにより、次の要求が発生します。

/myContoller/未定義

意図された URL は、MVC ルートであることさえ意図されていないものである可能性があります。それはイメージか何かのためかもしれません。

var imageUrl
var url = '/folder/' + imageUrl

/myFolder/未定義

ルーティングの構成方法に応じて、MVC はそれをルーティングしようとします。

ログにリクエストの送信元に関する情報はありますか?

更新 1:

MVC がサイトの特定の領域 (たとえば、images ディレクトリ) へのすべてのリクエストを無視するようにするには、次のようにします。

routes.IgnoreRoute("images/{*pathinfo}");
于 2013-08-28T13:39:47.307 に答える
0


@Dan の役立つ回答に基づいて、画像の URL ルーティングの問題を修正する方法を見つけました。


だから、私は私の 404 エラーのためのこの「キャッチオール」ルートを持っているのでRouteConfig.cs:

// for 404-error page routing
routes.MapRoute(
    name: "Error",
    url: "{*url}",
    defaults: new { controller = "Error", action = "PageNotFound" }
);


@foreach...MVC は、Razorステートメントを 介して URL として読み込んだ画像を奇妙に解釈しています。

// this is triggering the weird problem, dunno why:
@foreach (string image in this.Model.ImageArray)
{
    <img src="@this.Url.Content(image)" title="foobar" alt="@image" />
}


例外タイプはHttpException次のとおりで、生成される例外メッセージは次のとおりです。

パブリック アクション メソッド '[object HTMLImageElement]' がコントローラー 'MyWebsite.Controllers.HomeController' で見つかりませんでした



my のメソッドroutes.IgnoreRoute("MyImageFolderPath/{*pathinfo}");の先頭に 配置しても、この問題は解決しませんでしたが、次のようになりました。RegisterRoutesRouteConfig.cs

routes.IgnoreRoute("[object HTMLImageElement]");


ただし、404エラーの処理の実装が不十分なため、まだハックのように見えます... の 全体に

ブレークポイントを振りかけることで、それが機能することを確認できます(そこでエラーを処理している場合)。 RouteConfig.csApplication_ErrorGlobal.asax.csHttpException

于 2014-01-14T07:39:39.983 に答える