1

これは奇妙なものです。私がこの時点に到達するとき、彼らはいつもそうです。

私はMVCアプリを持っています。これは単一ページのアプリなので、すべてのルートが ajax 呼び出しですが、これは関係ないと思います。

不思議なことに、ある特定のページで突然 401 が表示され、信用情報を求められるようになりました。実際には、この MVC エリアにあるのは両方のページです。ローカルではなく qa でのみ実行しているため、デバッグできません。そして、それは最後のプッシュの後にのみ開始されました。他のどのページもこれを行っていません。

そこで、成功したページとサイトの 401 ページのヘッダーをフィドラーで比較しました。URLを除いてまったく同じです。アクション

401のアクション

public ActionResult Display_Template(ViewModel input)
{
    return this.View("Display", new TasksByFieldViewModel());
}

200のために

public ActionResult AddUpdate_Template(ViewModel input)
{
    return View("VendorAddUpdate", new VendorViewModel());
}

唯一の変更はこれであり、これは意味がありません。

401 ページから、reportviewer がある aspx ページにリダイレクトします。しかし、ボタンをクリックする必要があります。それと関係があるとは考えられません。

2 つ目は、qa サーバーで sqlserver トライアルから sqlserver スタンダードにアップグレードしたことです。

それだけです。完全に混乱。

どんな考えでも素晴らしいでしょう。

ありがとう、

ライフ


編集\修正\ハック:

わかりました、これは混乱または激怒のいずれかです。言うのは時期尚早です。

私の MVC エリアは壊れつつありますが、「レポート」と名付けられたのは、レポートでいっぱいだったからです。いくつかのヘイル メアリー テストを行った後、エリア名を Reportsx に変更しました。今では夢のように機能します。Area 名が Reports の場合、スタックのどの部分にもクレデンシャルを要求するように指示したことはないので、URL が xxx/Reports の場合にクレデンシャルを要求する IIS 設定または MVC 設定があるとしか考えられません。

私は別の見方を受け入れます。

4

1 に答える 1

1

あなたが働いている場所のシステムが私が働いているシステムと似ている場合、「QAで」と言うときは、テスターが突くためにコードをサーバーに置いたことを意味します. さて、ここで最初に始めたとき、このサーバーで見つけた特定の既存の構成ファイルをそのままにしておくように言われました。同様のポリシーを持っていると思います。したがって、新しいページをサーバーに展開しましたが、そのサーバーの Web.config はそのままにしました。ただし、Web.config には、次のようなセクションの完全なリストがあります。

<location path="something">
    <formsAuthenticationWrapper enabled="false"/>
    <system.webServer>
        <security>
            <authentication>
              <windowsAuthentication enabled="true"/>
              <anonymousAuthentication enabled="false"/>
            </authentication>
        </security>
    </system.webServer>
    <system.web>
        <authorization>
            <allow users="?"/>
        </authorization>
    </system.web>
</location>

最初の行のパス値としての「何か」は、「Assets/CSS」のようなパスまたは「Login.aspx」のようなページにすることができます。認証モードにはさまざまな設定があることに気付くでしょう。

ここで、QA サーバーの Web.config に "Reports" と呼ばれるものがあり、特定の認証モードが必要であると指定されている場合、そのモードに適した資格情報を提供できないと 401 が返されます。おそらく名前を "Reportsx" に変更します。一致するエントリを見つけることができなくなったため、デフォルト モードに戻りました。

そのため、サーバーの Web.config で「something/Reports」に言及しているセクションを確認し、必要な認証を確認してください。

于 2013-02-07T16:03:35.997 に答える