OAuth La richiesta del token da parte di ServiceProvider da parte del consumatore restituisce InternalServerError

StackOverflow https://stackoverflow.com/questions/1400674

Domanda

Sto giocando con DevDefined.OAuth - un'implementazione di consumer e provider OAuth per .Net http://code.google.com/p/devdefined-tools/wiki/OAuth e all'avvio del progetto ExampleConsumerSite dopo aver configurato gli endpoint di servizio sul mio server Web IIS 7, sto ricevendo il errore seguente:

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Exception: Request for uri: http://localhost:8080/RequestToken.aspx?oauth_callback=oob&oauth_nonce=94efde0b-dd45-4cee-8253-7496cef0b877&oauth_consumer_key=key&oauth_signature_method=PLAINTEXT&oauth_timestamp=1252512419&oauth_version=1.0&oauth_token=&oauth_signature=secret%2526 failed.
status code: InternalServerError

An error occurred during the parsing of a resource required to service this request.   Please review the following specific parse error details and modify your source file appropriately.

Source Error:
[HttpException]: 'RequestToken' is not allowed here because it does not extend class 'System.Web.UI.Page'.
  at System.Web.UI.TemplateParser.ProcessError(String message)
  at System.Web.UI.TemplateParser.ProcessInheritsAttribute(String baseTypeName, String codeFileBaseTypeName, String src, Assembly assembly)
  at System.Web.UI.TemplateParser.PostProcessMainDirectiveAttributes(IDictionary parseData)
[HttpParseException]: 'RequestToken' is not allowed here because it does not extend class 'System.Web.UI.Page'.
  at System.Web.UI.TemplateParser.ProcessException(Exception ex)
  at System.Web.UI.TemplateParser.ParseStringInternal(String text, Encoding fileEncoding)
  at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)
[HttpParseException]: 'RequestToken' is not allowed here because it does not extend class 'System.Web.UI.Page'.
  at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)
  at System.Web.UI.TemplateParser.ParseReader(StreamReader reader, VirtualPath virtualPath)
  at System.Web.UI.TemplateParser.ParseFile(String physicalPath, VirtualPath virtualPath)
  at System.Web.UI.TemplateParser.ParseInternal()
  at System.Web.UI.TemplateParser.Parse()
  at System.Web.UI.TemplateParser.Parse(ICollection referencedAssemblies, VirtualPath virtualPath)
  at System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType()
  at System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider)
  at System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders()
  at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
  at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
  at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
  at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
  at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert)
  at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert)
  at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
  at System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
  at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
  at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
  at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Ho notato che il parametro GET oauth_token è vuoto. Nel tracciare questo, l'origine dell'errore proviene dalla riga 12 della pagina Default.aspx.cs:

IToken requestToken = session.GetRequestToken();

protected void oauthRequest_Click(object sender, EventArgs e)
{
  OAuthSession session = CreateSession();

  IToken requestToken = session.GetRequestToken();

  if (string.IsNullOrEmpty(requestToken.Token))
  {
    throw new Exception("The request token was null or empty");
  }

  Session[requestToken.Token] = requestToken;

  string callBackUrl = "http://localhost:" + HttpContext.Current.Request.Url.Port + "/Callback.aspx";

  string authorizationUrl = session.GetUserAuthorizationUrlForToken(requestToken, callBackUrl);

  Response.Redirect(authorizationUrl, true);
}

Anche se non sono sicuro che ciò abbia a che fare con la configurazione degli endpoint del servizio, ma sto eseguendo il progetto consumer da VS2008 e ospitando il servizio su IIS. Per favore, consigli.

È stato utile?

Soluzione

Ora funziona. L'errore era dovuto alla pagina RequestToken.aspx in OAuthChannel che non ereditava la classe corretta dietro, quindi quando il sito del consumatore stava facendo una richiesta per un token che ha provocato un errore interno del server sul lato ServiceProvider.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top