3

だから私は奇妙な問題を抱えています。私は MVC4 で C# を使用しています。匿名認証をオフにし、ドメイン認証をオンにしました。この問題は、ローカル システム (デバッグにローカル IIS を使用) とリモート サーバーで発生します。通常の状況では、認証は両方のシステムで自動的かつ適切に機能します。

try-catch ブロック内で StringBuilder オブジェクトを使用する 2 つの C# MVC4 アプリケーション (.NET 4.5) があります。両方のアプリケーションで、1 つは try ブロックを使用し、もう 1 つは catch で、StringBuilder が参照されている場合、システムはドメイン資格情報の入力を求め、私の資格情報を除外せず、最終的にあきらめて次のエラーで失敗することに注意しました。

0: error
12030  -- connection error or connection reset
12031  -- connection error or connection reset

検索エンジンは、エラーに関するもう少し詳しい情報を明らかにします:

ERROR_WINHTTP_CONNECTION_ERROR 12030サーバーとの接続がリセットまたは終了されたか、互換性のない SSL プロトコルが検出されました。たとえば、クライアントが明示的に有効にしない限り、WinHTTP バージョン 5.1 は SSL2 をサポートしません。

エラー コード 12031 サーバーへの FTP 接続がリセットされました.. 接続できませんでした。

これらのどれも実際に私の問題を特定しておらず、実際の問題よりも許可の問題に関連しているようです。また、これらのエラーは説明的なエラーを上書きするため、クライアントで実際に見たい実際のエラーが失われます。

通常のドメイン アカウントと、より高度なドメイン管理者アカウントでこれを試しました。どちらも機能しません。この例では、Telerik の新しいベータ スケジューラ コントロールを使用していますが、これは別の Telerik プロジェクトで行われます。ただし、この問題は、Telerik で何かを行うことには関係ありません。

ドメイン認証を使用すると、この例でも認証を求めるプロンプトが表示されます。

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";


        return View();
    }
}

public ActionResult someAjax()
{
    try
    {
        throwAnError();
    }
    catch (Exception e)
    {
        string msg = returnErrorMsg(e);

        return new HttpStatusCodeResult(
        System.Net.HttpStatusCode.InternalServerError, msg);
    }

    return Json("I sent a valid value");
}

string throwAnError()
{
    throw new Exception("Something bad happened");
}

string returnErrorMsg(Exception exc)
{
    //return exc.Message;  // this doesn't prompt for credentials.

    StringBuilder sbError = new StringBuilder();
    sbError.AppendLine(exc.Message);
    return sbError.ToString();
}
}

Index.cshtml ファイル (別の場所に jquery と Index.js を含めました):

<button id="clickBtn">My Button</button>
<div id="value"></div>

インデックス.js:

$("#clickBtn").click(function () {
    $.ajax({
        url: '/Home/someAjax',
        success: function (data) {
            $("#value").text(data);
        },
        contentType: 'application/json'
    })
    .error(function (textStatus, errorThrown) {
        $("#value").text(textStatus);
    });
});
4

2 に答える 2

3

AppendLineに変更Append:

string returnErrorMsg(Exception exc)
{
    //return exc.Message;  // this doesn't prompt for credentials.

    StringBuilder sbError = new StringBuilder();
    sbError.Append(exc.Message);
    return sbError.ToString();
}

これで問題は解決するはずです。低レベルになるので、最後に「\r\n」を追加して、応答形式をねじ込みます。

于 2013-08-16T19:16:23.837 に答える
0

これは何とかあなたに役立ちますか?

ERROR_WINHTTP_CONNECTION_ERROR 12030サーバーとの接続がリセットまたは終了されたか、互換性のない SSL プロトコルが検出されました。たとえば、クライアントが明示的に有効にしない限り、WinHTTP バージョン 5.1 は SSL2 をサポートしません。

エラー コード12031サーバーへの FTP 接続がリセットされました.. 接続できませんでした。

于 2013-08-16T18:06:39.303 に答える