2012-06-29 2 views
4

내 webforms 프로젝트에 Nancy를 구현하려고했습니다.ASP.NET 웹폼 Nancy 라우팅

: 나는 web.config 파일의 contaning와 '/ 낸시'폴더를 만들었습니다

<system.webServer> 
    <handlers> 
     <add name="Nancy" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="nancy/*" /> 
    </handler> 
</system.webServer> 

: 내 설정이 추가되었습니다 https://github.com/NancyFx/Nancy/wiki/Hosting-nancy-with-asp.net

:이 가이드를 읽었습니다

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <httpHandlers> 
     <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*"/> 
    </httpHandlers> 
    </system.web> 
</configuration> 
나는 다음과 같은 C# 코드가있다 :

public class TestApi : Nancy.NancyModule 
{ 
    public TestApi() 
     : base("/nancy") 
    { 
     Get["/ok"] = parameters => 
          { 
           return "Ok"; 
          }; 
    } 
} 

이 경우 ACC를 작동/nancy/ok/ok ''에 액세스하고 '404'를 찾지 못하도록 '[/ ok]' '를 변경하면' (작은 트롤 이미지와 모든)

EDIT * 나는 그것을두면 '가져 오기 [ "가/OK"] 및 액세스/확인/확인/확인 내가 "확인"을 다시 얻을 ...

왜 내가 더 구체적인 경로를 만들 수없는 모든 아이디어?

인사말 MADS

+0

모듈 중 하나의 ctor에 중단 점을 넣으면 어떻게됩니까? 디버깅 할 때 멈 춥니 다? –

답변

0

당신이 URL을 /nancy에서 낸시를 실행하려는 경로로 판단, 그래서 아무것도가 다른 ASP.Net 웹 양식에서 계속 작동합니다 루트에 정의하면서 그 아래의 모든 URL은 낸시에 의해 처리됩니다.위치 /nancy에서 전화이 (path="*"에 의해 정의 된) 모든 요청으로

<location path="nancy"> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <httpHandlers> 
     <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*"/> 
    </httpHandlers> 
    </system.web> 

    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <handlers> 
     <add name="Nancy" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*"/> 
    </handlers> 
    </system.webServer> 
</location> 

수 있습니다 :이 경우

, 문제는 당신이 <location> 태그 핸들러를 포장 할 필요가있다 낸시가 처리했습니다.

이 정보

기존 사이트

https://github.com/NancyFx/Nancy/wiki/Hosting-nancy-with-asp.net#adding-nancy-to-an-existing-site

특정 제목에^직접 링크에 낸시를 추가 에서 당신이 연결된 링크에서 찾을 수 있습니다.

1

난 그냥 시험이 시도하고 내 경로는 문제없이 일했다. 여기에 내 테스트입니다 :

[TestFixture] 
public class ScratchNancy 
{ 
    [Test] 
    public void RootTest() 
    { 
     var defaultNancyBootstrapper = new DefaultNancyBootstrapper(); 
     var browser = new Browser(defaultNancyBootstrapper); 

     var result = browser.Get("/nancy/ok/ok", with => with.HttpRequest()); 

     Assert.AreEqual("It works!", result.Body.AsString()); 
    } 

    public class RootModule : NancyModule 
    { 
     public RootModule() : base("/nancy") 
     { 
      Get["/ok/ok"] = p => 
       { 
        return Response.AsText("It works!"); 
       }; 
     }    
    } 
} 

제공 @TheCodeJunkie는 성공을위한 낸시 설정을위한 훌륭한 자원입니다 링크. 여기 다시 있습니다 : https://github.com/NancyFx/Nancy/wiki/Hosting-nancy-with-asp.net

+0

예, 그 링크, 텍스트의 첫 번째 줄 뒤에 내 게시물에서 내 첫 번째 있어야합니다. https://github.com/NancyFx/Nancy/wiki/Hosting-nancy-with-asp.net하지만 내 안내에 나온 것처럼 가이드를 따라 가면 작동하지 않습니다. IIS 설정 문제 일 수도 있지만 알아낼 수는 없습니다. / – MazeezaM

1

루트 web.config에 이것을 추가하는 것을 잊지 않았습니까?

<system.web> 
    <httpHandlers> 
     <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="nancy/*" /> 
    </httpHandlers> 
    </system.web> 

이 nancy의 폴더 web.config에 있습니까? 문제가 지속되면

<httpHandlers> 
    <add path="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" verb="*"/> 
</httpHandlers> 

, 여기에 다소하지 우아한 해결책 :

  • 당신이 원하는 경우 /낸시/확인/ 확인, 당신의 webconfig에 다른 행을 추가

    <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="nancy/*/*"> 
    
  • /nancy/ok/ok/ok을 원할 경우 다른 줄을 추가하십시오 :

    <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="nancy/*/*/*">