0

これは、ローカルの開発およびテスト環境では機能しますが、運用環境では機能しないため、IIS の構成の問題であることは間違いありません。ただし、構成の問題を見つけることができなかったので、この質問です。

これが問題のサービス方法です

    [WebInvoke(UriTemplate = "GetSpecificData/{type}/{id}/{categories}", Method = "POST", ResponseFormat = WebMessageFormat.Json)]
    [OperationContract]
    string GetSpecificData(string id, string type, string categories);

たとえば、次の URL で呼び出しています。

/Services/MapService.svc/GetSpecificData/Office/18.029788,59.332478/0

本番環境では、すぐに http ステータス 400 とサーバーからの「Bad request」が発生します。ローカルおよびテスト環境では問題なく動作します。

問題は ID 部分に関連していると考えられます。事実上他のものに変更すると、違いがどれほど小さくても、うまくいくようです. 下記は用例です

機能しません: 18.029788,59.332478

作品

  • 19.029788,59.332478作品
  • 28.029788,59.332478作品
  • 18.129788,59.332478作品
  • 18.029788,59.432478作品
  • 18.029788,59.asdfasd332478
  • 18.asdf029788,59.332478

機能しません: 16.163657,60.146846

作品

  • 16.263657,60.146846
  • 16.363657,60.146846
  • 16.463657,60.146846
  • 16.563657,60.146846
  • 16.663657,60.146846
  • 16.163657,60.246846
  • 16.363657adsfasdfasdfasdf、60.146846asdfasdfasdfa

答えを探して物事を絞り込む中で、これらは私たちが結論付けたいくつかのことです

  • HTTP または HTTPS は関係ありません
  • 原因となっている ISA または FW はありません
  • URL の奇妙な文字 (コンマやドットなど) は問題ではありません
  • リクエストの長さは問題ではありません。もっと長くなる可能性があります (260 文字)

お願いします、誰かがこれが何であるかについてのアイデアを持っていることを願っています. それを理解していないのは私を夢中にさせます。どうやらサービスを書き直してクエリパラメータまたはsimliarを取ることで問題を解決する方法があるようですが、私は本当にこの問題の原因を理解したいと思っています

4

1 に答える 1

0

どうやら「400Badrequest」は、IISがアプリケーションへの入力要求を拒否したことを意味するわけではありません(私たちが思ったように)。実稼働マシンでトレースを設定することができ、最終的にコードが入力され、時にはnullのフィールドを使用するLINQOrderByがあることがわかりました。つまり、最終的には単純なNullReference ...

于 2012-08-23T08:58:35.150 に答える