ASP.NET MVC 3 - DotNetOpenAuth - System.Security.SecurityException - PullRequest
1 голос
/ 28 февраля 2011

Я пытаюсь настроить простой веб-сайт, который использует DotNetOpenAuth в качестве поставщика членства. Все шло отлично, пока я не столкнулся со следующим исключением.

[SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
    System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
    System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) +31
    System.Security.CodeAccessPermission.Demand() +46
    System.Net.Configuration.DefaultProxySection.PostDeserialize() +103

Код ниже. К сожалению, я не могу воспроизвести проблему на моей локальной машине. Это размещено на общем хостинге GoDaddy. Строка, которая вызывает исключение: openid.CreateRequest(id):

public virtual ActionResult Authenticate(OpenIdAuthenticationViewModel model, string returnUrl)
{
    OpenIdRelyingParty openid = new OpenIdRelyingParty();
    var response = openid.GetResponse();

    if (response == null)
    {
        Identifier id;
        if (Identifier.TryParse(model.OpenIdUrl, out id))
        {
            try
            {
                var openIdRequest = openid.CreateRequest(id);
                var result = openIdRequest.RedirectingResponse.AsActionResult();
                return result;
            }
            catch (ProtocolException pe)
            {
                ViewData["OpenIdMessage"] = pe.Message;
                return View(model);
            }
        }
        else
        {
            ViewData["OpenIdMessage"] = "Invalid Identifier";
            return View(model);
        }
    }

    // code that handles response
}

Я пытался изменить атрибут requirePermission

<section name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection" requirePermission="false" allowLocation="true" />

но это только вызвало другой корень для трассировки стека исключений. В интернете очень мало информации об этом исключении.

1 Ответ

1 голос
/ 01 марта 2011

Похоже, это потому, что у вас есть файл web.config со следующим фрагментом:

<system.net>
    <defaultProxy enabled="true" />
</system.net>

Попробуйте удалить тег <defaultProxy>, который в GoDaddy в любом случае не требуется.

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