IIS6을 실행하는 경우.
그래서 '.' IIS6에서는 작동하지 않지만 Visual Studio 디버거와 IIS7에서는 제대로 작동합니다. 여기에 재현 할 단계가 있습니다.MVC 3은 '.'을 허용하지 않습니다. URL 경로에서 IIS6을 사용할 때
재현 단계 :
- 빈 MVC 3 프로젝트부터 시작하십시오.
- 추가 "색인"이라는 새로운보기가 기본값을 사용합니다.
는 -) (RegisterRoutes 구성은 다음과 같습니다 :
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"QuerySomething",
"QueryStuff/Index/{*aString}",
new { controller = "QueryStuff", action = "Index", aString = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
이제
, JSON을 반환하는 컨트롤러를 추가 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
public class QueryStuffController : Controller
{
//
// GET: /QueryStuff/
public ActionResult Index(string aString)
{
return Json("aString:oye",JsonRequestBehavior.AllowGet);
}
}
}
페이지에 액세스 할 수 있는지 확인합니다
당신은 200
이제가 함께 거기에 도착하려고 HTTP GET한다 '.'
UPDATE
내가 email 주소를 route에 정규식을 수정하고 문제가 더 악화했다.
routes.MapRoute(
"QuerySomething",
"QueryStuff/Index/{aString}"
, new { controller = "QuerySomething", action = "Index" },
new { aString = @"\b[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b" }
);
이것은 매번 404 번입니다.
이 작업을 수행 할 수 있습니다. –
@ColinDesmond : "http의 제한"비트로 어디로 가고 있는지 잘 모르겠습니다. HTTP는'.'에 아무런 문제가 없으며 URL과 URI에서 일반적으로 사용됩니다 (인터넷 라우팅 가능 도메인 이름에서도 필요합니다). 아마도 RegEx 나 웹 서버가 라우팅 규칙에서'.'을 구문 분석하는 것을 의미했을까요? – Powerlord
@Colin Desmond -이 문제는 IIS6과 관련이 있다고 확신합니다. BuildStarted는 IIS7에서 문제를 재현 할 수 없기 때문에 Visual Studio 디버거에서이 기능이 잘 작동합니다. 나는 당신의 아이디어를 사용하여 대체하고 있습니다. ' char와 '!'. @Haacked와 같은 누군가가 문제를 확인할 때까지 해결 방법으로 작동합니다. –