Отправка данных с помощью класса WebRequest на веб-сайт DotNetOpenAuth - PullRequest
0 голосов
/ 05 марта 2010

Я пытаюсь отправить данные на сайт DotNetOpenAuth, как описано здесь http://msdn.microsoft.com/en-us/library/debx8sh9.aspx Отправитель получает (500) Внутренняя ошибка сервера. Тот же код для пустого сайта без DotNetOpenAuth работает отлично. Должен ли я что-то настроить?

Вот исключение:

System.ArgumentNullException was unhandled by user code
  Message="Value cannot be null.\r\nParameter name: key"
  Source="mscorlib"
  ParamName="key"
  StackTrace:
       at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
       at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
       at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
       at DotNetOpenAuth.OAuth.ChannelElements.OAuthChannel.ReadFromRequestCore(HttpRequestInfo request) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\OAuth\ChannelElements\OAuthChannel.cs:line 145
       at DotNetOpenAuth.Messaging.Channel.ReadFromRequest(HttpRequestInfo httpRequest) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\Messaging\Channel.cs:line 372
       at DotNetOpenAuth.OAuth.ServiceProvider.ReadRequest(HttpRequestInfo request) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\OAuth\ServiceProvider.cs:line 222

Исключение происходит в последней строке кода:

    private void context_AuthenticateRequest(object sender, EventArgs e)
    {
        // Don't read OAuth messages directed at the OAuth controller or else we'll fail nonce checks.
        if (this.IsOAuthControllerRequest())
        {
            return;
        }

        if (HttpContext.Current.Request.HttpMethod != "HEAD")
        { // workaround: avoid involving OAuth for HEAD requests.
            IDirectedProtocolMessage incomingMessage = OAuthServiceProvider.ServiceProvider.ReadRequest(new HttpRequestInfo(this.application.Context.Request));

1 Ответ

1 голос
/ 07 марта 2010

Если вы отправляете запрос POST с Content-Type из application/x-www-form-urlencoded, но сущность POST содержит что-то отличное от обычного формата key1=value1&key2=value2, это может объяснить это.Похоже, что DotNetOpenAuth не может обработать объект POST, который утверждает, что он является парой имя = значение, но имеет только значение без ключа перед ним.Возможно, это ошибка в DotNetOpenAuth, поскольку обычно это просто значение нулевого ключа.

Если вы вообще не отправляете пары ключ = значение, я предлагаю вам удалить или изменить заголовок Content-Type, чтобы не претендовать на отправку пар ключ = значение.Если вы отправляете их, но намеренно отправляете пустой ключ, подождите, пока ошибка исправлена ​​.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...