我希望能够从RouteCollection生成URL,而无需访问HttpContext。查看RouteCollection的实现方式,所有方法都需要访问RequestContext才能获取虚拟路径。
我通过模拟HttpContext来解决此问题,但这对RhinoMocks增加了一个尴尬的依赖,这不是一个合理的解决方案。我还有其他选择可以在上下文之外生成Urls吗?
最佳答案
确实,这是一个很好的问题。路由本身确实与从正在运行的ASP.NET应用程序中进行调用有一些依赖关系,例如获取应用程序的根URL以及该URL中也包含的任何无cookie形式或 session cookie。虽然创建模拟对象是一种理论上的解决方案,但是不建议在运行时使用它。
我的建议是在这种情况下完全不要使用路由,而将URL硬编码到电子邮件中。电子邮件中的链接必须具有完全限定的URL(主机名+路径),并且路由甚至无法生成该URL的主机名,因此您必须进行硬编码。
关于asp.net-mvc - ASP.NET MVC-生成没有Http/请求上下文的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1931068/