Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “创造我自己的”;URL管理器“;_C#_Asp.net - Fatal编程技术网

C# “创造我自己的”;URL管理器“;

C# “创造我自己的”;URL管理器“;,c#,asp.net,C#,Asp.net,我正在编写一个http API,我需要比asp.net中的灵活性多一点。这是一个很简单的问题,我需要一些帮助才能走上正轨 我的问题是,我想根据请求创建一个响应对象。F.x用户可以在请求时获取xml文档:“myapi/images/5/xml”。或者,如果以json结尾,则将其作为json。创建正确的响应对象没有问题。我只需要一种方法来收集某个对象中的所有请求,然后用正则表达式解析URL,并在此基础上创建正确的响应 但是如何收集web应用程序上的所有请求呢?您可能不想用正则表达式解析整个URL。连

我正在编写一个http API,我需要比asp.net中的灵活性多一点。这是一个很简单的问题,我需要一些帮助才能走上正轨

我的问题是,我想根据请求创建一个响应对象。F.x用户可以在请求时获取xml文档:“myapi/images/5/xml”。或者,如果以json结尾,则将其作为json。创建正确的响应对象没有问题。我只需要一种方法来收集某个对象中的所有请求,然后用正则表达式解析URL,并在此基础上创建正确的响应

但是如何收集web应用程序上的所有请求呢?

您可能不想用正则表达式解析整个URL。连接到ASP.NET的路由引擎可能更容易:-

routes.MapHttpRoute(
  name: "MyApi",
  routeTemplate: "myapi/{controller}/{id}/{responseType}",
  defaults: new
  {
    id = RouteParameter.Optional, responseType = RouteParameter.Optional
  });
然后,您的操作方法可以从url接受参数
responseType


不过,我同意steven的上述评论,您可能应该从请求头而不是url中获取响应类型。

只是好奇您有什么需要在url中指定返回类型。我认为这不是一个好的设计。您应该让客户机通过请求中的
Accept
标题指定他们想要的返回类型。然后API将读取accept类型的请求头,然后相应地返回???最后是你的问题。“收集某个对象中的所有请求”是什么意思?如果您指的是所有请求头,那么当您执行http请求操作时,您不创建请求头吗?http请求头用于此目的,用于保存他们所需数据的所有请求信息。您可以非常灵活地处理URL和正则表达式。还支持json格式。你可以从这里开始学习:对不起,这么久了!我使用了webapi:,可以与窗体或mvc一起使用。