Aralıklı asp.net mvc istisna: “ABC XYZ denetleyicisi bulunamadı kamu eylem Bir yöntem.”
Zaman zaman bir istisna ASP.NET mvc eylem yöntem bulabilir mi? " diyerek alıyorum. İşte bu özel durum:
Ortak bir eylem yöntemi '' Dolgu kumanda üzerinde bulunan değil 'Yoğun, temiz.Form.Web.Denetleyicileri.'. ChrisController
Bu uygulama çoğu zaman çalıştığı için yönlendirme kurmak doğru olduğunu düşünüyorum. Burada kontrol eylem yöntemi.
[ActionName("Fill")]
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post), UserIdFilter, DTOFilter]
public ActionResult Fill(int userId, int subscriberId, DisplayMode? mode)
{
//…
}
Rota:
routes.MapRoute(
"SchoonForm",
"Form/Fill/{subscriberId}",
new { controller = "ChrisController", action = "Fill" },
new { subscriberId = @"\d " }
);
Ve işte yığını:
Sistem.Web.HttpException: Bir kamu eylem yöntemi 'Doldurmak' değil bulundu denetleyicisinde 'Yoğun, temiz.Form.Web.Denetleyicileri.'.ChrisController at Sistem.Web.Mvc.Denetleyicisi.(Dize HandleUnknownAction actionName) :\C dev\üçüncü taraf\MvcDev\src\SystemWebMvc\\Denetleyicisi, Mvc.cs:line 197 Sistem.Web.Mvc.Denetleyicisi.()ExecuteCore içinde :\C dev\üçüncü taraf\MvcDev\src\SystemWebMvc\\Denetleyicisi, Mvc.cs:line At 164 Sistem.Web.Mvc.ControllerBase.(RequestContext Yürütmek requestContext) C:\\üçüncü taraf\MvcDev\src\SystemWebMvc\dev ControllerBase Mvc\.cs:line Az 76 Sistem.Web.Mvc.ControllerBase.Sistem.Web.Mvc.İController.(RequestContext Yürütmek requestContext) C:\\üçüncü taraf\MvcDev\src\SystemWebMvc\dev ControllerBase Mvc\.cs:line At 87 Sistem.Web.Mvc.MvcHandler.(HttpContextBase ProcessRequest httpContext) C:\\üçüncü taraf\MvcDev\src\SystemWebMvc\dev MvcHandler Mvc\.cs:line 80 Sistem.Web.Mvc.MvcHandler.(HttpContext ProcessRequest httpContext) C:\\üçüncü taraf\MvcDev\src\SystemWebMvc\dev MvcHandler Mvc\.cs:line 68 Sistem.Web.Mvc.MvcHandler.Sistem.Web.Ihttphandler.(HttpContext ProcessRequest httpContext) C:\\üçüncü taraf\MvcDev\src\SystemWebMvc\dev MvcHandler Mvc\.cs:line At 104 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.İExecutionStep.()Execute at Sistem.Web.HttpApplication.(İExecutionStep ExecuteStep adım, Boolean& completedSynchronously)
İşte hepsi aynı şekilde çalışır filtrelerimi bir örnek:
public class UserIdFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
const string Key = "userId";
if (filterContext.ActionParameters.ContainsKey(Key))
{
filterContext.ActionParameters[Key] = // get the user id from session or cookie
}
base.OnActionExecuting(filterContext);
}
}
Teşekkürler Chris
CEVAP
Cevap bulduk. Bizim web kayıtlarına baktık. SEÇENEKLERİ, PROPFIND ve KAFA gibi garip bir http eylemler (fiiller yöntemleri/) aldığımızı gösterdi.
Bu tezler bazı özel durumlar nedeni gibi görünüyor. Bu aralıklı olduğunu açıklıyor.
Curl.exe aracı ile sorunu biz yeniden:
curl.exe -X OPTIONS http://localhost/v2.3.1.0/(S(boztz1aquhzurevtjwllzr45))/Form/Fill/273
curl.exe -X PROPFIND http://localhost/v2.3.1.0/(S(boztz1aquhzurevtjwllzr45))/Form/Fill/273
curl.exe -X HEAD http://localhost/v2.3.1.0/(S(boztz1aquhzurevtjwllzr45))/Form/Fill/273
Kullandığımız web düzeltmek için bir yetkilendirme bölümü eklemek oldu.config:
<authorization>
<deny users="*" verbs="OPTIONS, PROPFIND, HEAD"/>
</authorization>
XML denetleyicisi dönüş'in Eylem ...
Web API Yönlendirme - {denetleyicisi} ...
Navigasyon geri düğmesi için ayarlama ...
İşlev< derleyici Belirsiz çağırma ha...
Geçersiz bir yöntem bir istisna atar M...