2012-08-13 2 views
0

현재 asp.net 응용 프로그램에 asp-net 웹 API 지원을 추가하고 있습니다. 그러나 임의의 경로를 사용하여 컨트롤러에서 작업을 요청할 때 AppRelativeCurrentExecutionFilePath는 항상 "~ /"로 설정되고 400 오류가 발생합니다. 사용할 수있는 경로 디버거를 사용했습니다. here은 AppRelativeCurrentExecutionFilePath가 URL에 상관없이 항상 올바르지 않다는 것을 확인했습니다.AppRelativeCurrentExecutionFilePath는 항상 모든 ASP.NET 웹 API 경로에 대해 ~ /로 설정됩니다.

예 : URL에 액세스 아래의 모든, 경로 테이블 항목이 필요한 경우에도 위의 URL에 또한 "~ /"

http://localhost:1521/Testclient/apitest/values/get 
http://localhost:1521/Testclient/apitest/values/get/1 

경로 디버거 실패 보여줍니다/아니오 일치하는 것으로 AppRelativeCurrentExecutionFilePath 있습니다.

모든 Application_BeginRequest/VPP/module/http 처리기와 라우팅에 영향을 줄 수 있지만 여전히 동일한 문제가 될 수있는 모든 항목을 사용 중지했습니다. 디버깅 할 수있는 다른 가능한 방법은 무엇입니까?

Update1 : global.asax에서 Application_BeginRequest()를 처리하여 application.Request.AppRelativeCurrentExecutionFilePath를 확인했습니다. 잘못된 경우에도 마찬가지입니다.

답변

1

사이트에서 문제를 발견 한 것으로 보이며 사이트에 '. 이름과 어떤 이유로 asp.net 그것을 좋아하지 않는다. 문제의 원인 루트 경로

http://localhost:1521/Test.client/apitest/values/get 
http://localhost:1521/Test.client/apitest/values/get/1 

참고 "Test.Client을"했다가 "TestClient을"으로 변경하고 예상대로 모든 일했다. 테스트 컴퓨터에서 링크를 복사했을 때이를 변경하고 간과했습니다. 이 문제가 발생하면 몇 시간을 절약 할 수 있습니다. 이것이 버그인지 아직도 확실하지 않습니다!?

+0

이것은 VS 2012 개발 서버의 버그이기도하며 ASP.NET MVC뿐 아니라 WebForms 페이지 라우팅을위한 페이지 라우팅에도 영향을 미칩니다. 간단히 디렉토리 이름에서 마침표를 제거하고 모든 것이 작동하기 시작했습니다. 게시 해 주셔서 감사합니다 ... 그것은 당신이 의심하는 시간을 절약 해 줬습니다! –