2013-07-05 83 views
0

我有一个问题,我正在创建一个Quartz.NET作业(使用我的团队正在开发的Web应用程序中嵌入的Quartz.NET副本,如果它很重要)发送电子邮件给包含超链接到属于同一应用程序的控制器/操作方法。如何手动更改HttpRequest.ApplicationPath属性?

为了生成这个链接,我知道一些硬编码是不可避免的(由于缺少创建实际会话),但是我希望尽可能少地使用硬编码,以便它至少有一些余地为了改变事件,我的团队最终希望重新组织应用程序架构。幸运的是,我能够找到一种方法来手动创建一个UrlHelper对象,供Quartz作业使用(请参阅Call UrlHelper in models in ASP.NET MVC)。

我的问题是,我需要某种方式来手动设置存储在HttpRequest对象中的应用程序虚拟路径。这是因为网络应用不在我们使用的网站的根目录。

你们知道我有办法吗?我试着在Google上搜索如何设置/更改HttpRequest.ApplicationPath属性或者该属性的数据来​​自哪里,但没有任何相关内容出现。

回答

0

事实证明,HttpRequest.ApplicationPath属性是空的(我猜是手动创建一个HttpRequest对象的结果),所以我最终做的是在一个静态字段中对应用程序路径进行硬编码对象并使用它来代替。

@AntLac:谢谢你的帮助。你的答案也会起作用。

0

这是一个只读属性,如文档http://msdn.microsoft.com/en-us/library/system.web.httprequest.applicationpath.aspx所示。但是,您可以将实际根的String.Replace()更改为新的。

+0

我在哪里做String.Replace()?不幸的是,既然这是为了工作,我不能在没有问我的老板的情况下发布任何实际的代码,但创建UrlHelper的代码几乎是从J.PabloFernández在我引用的问题中发布的代码中逐字逐句的。 – user2154603

+0

我是.NET编程的新手,所以我仍然在学习in和out。 – user2154603

+0

我为延误表示歉意,我一直在度假。 HttpRequest.ApplicationPath返回一个字符串对象,所以你会附加替换它,HttpRequest.ApplicationPath.Replace()。 – AntLaC