你如何告诉 Nancy 重定向到虚拟目录中的 URL?
How do you tell Nancy to redirect to a URL inside a virtual directory?
我是 运行 我开发机器上虚拟目录中的 Nancy 应用程序,我有静态内容在工作,但如果模块重定向浏览器,那么 URL 被发回不正确。
如果结果是:
return new RedirectResponse("/");
然后浏览器重定向到 http://localhost/
而不是虚拟目录的根目录。
如果我尝试
return new RedirectResponse("~/");
我被带到 http://localhost/MyVirtualDirectory/action/~/
,其中至少包括虚拟目录,但其余的都搞砸了。
我应该指出模块是这样创建的...
public abstract class ActionRootModule : NancyModule
{
protected ActionRootModule() : base("/action/") { }
}
public class SendEmailModule : ActionRootModule
{
public SendEmailModule()
{
// Parts missing for brevity....
Post["/send-email/"] = o => PostSendEmail(o);
}
private dynamic PostSendEmail(dynamic o)
{
// Do stuff...
return new RedirectResponse("~/");
}
}
告诉 Nancy 重定向到虚拟目录中的特定 URL 的正确方法是什么?
我 运行 Visual Studio 使用 Windows 7 和 IIS 7.5(不是 IIS Express - 因为我有来自第三方的传入流量进行回调)
这不会成为生产环境的问题,因为生产环境部署不会在虚拟目录中。
有两种方法可以解决这个问题。
1) 使用return Response.AsRedirect("~/");
2) 使用return new RedirectResponse(Context.ToFullPath("~/"));
第一个选项只是对第二个选项的方便包装,因此无论哪种方式都会产生相同的结果 (https://github.com/NancyFx/Nancy/blob/85dfe8567d794ff3e766521a9fa0891832d4fc8a/src/Nancy/FormatterExtensions.cs#L51)。对 ToFullpath()
的调用会更正您在重定向的 URL.
中看到的 /~/
我是 运行 我开发机器上虚拟目录中的 Nancy 应用程序,我有静态内容在工作,但如果模块重定向浏览器,那么 URL 被发回不正确。
如果结果是:
return new RedirectResponse("/");
然后浏览器重定向到 http://localhost/
而不是虚拟目录的根目录。
如果我尝试
return new RedirectResponse("~/");
我被带到 http://localhost/MyVirtualDirectory/action/~/
,其中至少包括虚拟目录,但其余的都搞砸了。
我应该指出模块是这样创建的...
public abstract class ActionRootModule : NancyModule
{
protected ActionRootModule() : base("/action/") { }
}
public class SendEmailModule : ActionRootModule
{
public SendEmailModule()
{
// Parts missing for brevity....
Post["/send-email/"] = o => PostSendEmail(o);
}
private dynamic PostSendEmail(dynamic o)
{
// Do stuff...
return new RedirectResponse("~/");
}
}
告诉 Nancy 重定向到虚拟目录中的特定 URL 的正确方法是什么?
我 运行 Visual Studio 使用 Windows 7 和 IIS 7.5(不是 IIS Express - 因为我有来自第三方的传入流量进行回调)
这不会成为生产环境的问题,因为生产环境部署不会在虚拟目录中。
有两种方法可以解决这个问题。
1) 使用return Response.AsRedirect("~/");
2) 使用return new RedirectResponse(Context.ToFullPath("~/"));
第一个选项只是对第二个选项的方便包装,因此无论哪种方式都会产生相同的结果 (https://github.com/NancyFx/Nancy/blob/85dfe8567d794ff3e766521a9fa0891832d4fc8a/src/Nancy/FormatterExtensions.cs#L51)。对 ToFullpath()
的调用会更正您在重定向的 URL.
/~/