Pregunta

Estoy jugando con DevDefined.OAuth - una implementación de OAuth consumidor y proveedor para .Net http://code.google.com/p/devdefined-tools/wiki/OAuth y al iniciar el proyecto ExampleConsumerSite después de configurar los puntos finales del servicio en mi servidor web IIS 7, recibo la siguiente error:

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)

He notado que el parámetro GET de oauth_token está vacío. Al rastrear esto, el origen del error es de la línea 12 de la página 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);
}

Aunque no estoy seguro de si esto tiene que ver con la configuración de los puntos finales del servicio, pero estoy ejecutando el proyecto del consumidor desde VS2008 y hospedando el servicio en IIS. Por favor consejo.

¿Fue útil?

Solución

Trabajando ahora. El error se debió a que la página RequestToken.aspx en el OAuthChannel no heredó la clase correcta detrás, por lo que cuando el sitio del consumidor realizó una solicitud de un token que resultó en un error interno del servidor en el lado del Proveedor de Servicios.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top