如何从业务逻辑层获取URL?

时间:2015-05-19 06:26:05

标签: c#

我在C#项目中有一个业务逻辑层,我需要找到一种基于运行网站的基本URL生成URL的方法。

例如,这是网址:http://localhost:56240/Management/Quiz.aspx?QuizID=46

我需要一种方法来获取此部分: http://localhost:56240 使用业务逻辑层中的C#代码(意味着我无法使用Request对象)或context.Request)。

有办法吗?

3 个答案:

答案 0 :(得分:4)

在您的班级中,您可以使用HttpContext.Current属性(在System.Web.dll中)。从那里,您也可以使用Request对象。例如

HttpRequest request = HttpContext.Current.Request;
string url = request.Url.Authority.ToString();

不要忘记在您的课程中包含System.Web的参考。

答案 1 :(得分:0)

从表示层调用该方法并将HttpContext传递到业务逻辑层,您可以使用HttpContext.Request.Url.Authority来获取您的域http://localhost:56240

如果您不需要Request.Url.Authority

中的其他内容,您可以直接将HttpContext作为字符串传递给您的方法

答案 2 :(得分:0)

一种解决方案是从逻辑层返回url的路径,即没有主机。并在控制器级别附加主机。

从逻辑

return new LogicResponseObject() {
...
Path = "/test/path/"
...
};

在Controller / Web / Service层

HttpRequest request = HttpContext.Current.Request; //Get request object
string authority = request.Url.Authority; //http://www.example.com
string url = authority + logicResponseObject.Path; //http://www.example.com/test/path/

这样,逻辑将与HTTP上下文对象分离。