DOTNETサイトの複数のルートがアクションの要約に対応します

要件:一部のブラウザでは、この時点であなたは同じアクションに複数のルートを作成する必要があり、広告の言葉でパスをブロックします。

例:オリジナル:http://lalalalalala.org:1506 / API /広告/共通要求パスは現在、別の追加する必要がHTTPを:// lalalalalala .ORG:1506 / API / guanggao /コモン 

.N 1. らコア次のようにこのような追加の経路には、比較的簡単です

だけで闊歩して表示することができ、その後、彼らはGetメソッドを指している、次の4つのパスを取得することができるようになります、コントローラーとアクションでルート特性を向上させるためのタグを追加する必要があります。

2.   過去ログFreamwork項目の下で:

システムはWEBAPI 1であり、ルーティング機能特性を有していない、それはタグ付けを介してリネーム.NETコアと同じではありません。

この方法は、以下のソリューションを参照することができ、私は地元のルートに登録、我々は構成が増加している、ルーティング方法の必要性が増加します。

 闊歩の効果の点では次のように:

 

 

この方法2は、webapi2にアップグレードした後、ルーティング特性を使用しています。

 1. [WEBAPI 1]、以下の最新のものにアップグレードする[2 WEBAPI]へのアップグレード

どの ウェブホストは、次の例外が表示されますアップグレードしないでください

次のコードは、上記のデフォルトルートに追加され、以下に示すように2手動で、特徴的な構成のコードをルーティング追加config.MapHttpAttributeRoutesを();

 

* 経路の特性は一般的なルーティング規則の上であることが、ここで注意してください。

如果把特性路由放在默认路由的下面,编译不会出错,但是在运行时候就会出现找不到Action 的问题,如下图:

{

  "Message": "找不到与请求 URI“http://localhost:21094/api/Default2/Get?id=2”匹配的 HTTP 资源。",

  "MessageDetail": "未找到与名为“Default2”的控制器匹配的类型。"

 }

3.开始修改controller

 

通过 ~/api/xxx/yyy  可以重写路由前缀

 

 

 补充   Webapi2 里面跨域问题

 

在第二步升级了webapi之后,在前端请求的时候,会出现跨域问题。解决可以参考我下面的做法:

1.升级或者安装nuget 

 

然后在配置的地方添加如下代码:   config.EnableCors();

 

  config.EnableCors() 里面可以指定 跨域的Domain、Header以及Methond ,但是广告系统原来在web.config进行了设置,所以这里启用一下就可以了。

 

启动程序此时还是会出现一个问题:

当前端使用Ajax进行跨域请求的时候,会先试探性的发一个Option请求,然后得到对应的跨域信息,如上面红框中的配置。 当发现允许请求的时候,此时就进行下一步真实的请求。

问题在于这个Option请求返回Code要是200,前端才认为是正常的。但是直接升级webapi之后,Option请求返回是404 not found。 即使带着这些配置的跨域信息也不能被前端所处理。

所以在 每个请求的开始,增加一个判断,将这个方法绑定到BeginRequest事件上。

 

然后跨域请求的第一次Option请求返回都是200,并且带着刚刚红框中的信息。

 

おすすめ

転載: www.cnblogs.com/dcz2015/p/11323876.html