【问题标题】:OAuth Consumer request for token from ServiceProvider returns InternalServerError来自 ServiceProvider 的 OAuth 消费者对令牌的请求返回 InternalServerError
【发布时间】:2010-11-26 21:44:05
【问题描述】:

我正在玩 DevDefined.OAuth - .Net http://code.google.com/p/devdefined-tools/wiki/OAuth 的 OAuth 消费者和提供者实现,在我的 IIS 7 Web 服务器上配置服务端点后启动 ExampleConsumerSite 项目时,我收到以下错误:

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)

我注意到 oauth_token GET 参数为空。跟踪此,错误来源来自 Default.aspx.cs 页面的第 12 行:

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);
}

虽然我不确定这是否与配置服务端点有关,但我正在从 VS2008 运行消费者项目并在 IIS 上托管服务。请指教。

【问题讨论】:

    标签: wcf rest oauth restful-authentication


    【解决方案1】:

    现在工作。错误是由于 OAuthChannel 中的页面 RequestToken.aspx 没有继承正确的类,因此当消费者站点请求令牌时导致 ServiceProvider 端出现内部服务器错误。

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 2015-09-25
      • 2016-06-26
      • 2014-11-15
      • 1970-01-01
      • 2013-03-20
      • 2017-03-14
      • 1970-01-01
      相关资源
      最近更新 更多