小编get*_*ode的帖子

从C#中的Oracle函数返回错误"fetch out of sequence",其中function使用dblink to SQL Server

在C#代码中,我正在尝试从Oracle函数加载数据表.该函数具有SYS_REFCURSOR返回类型.这是我尝试DataTable dt使用函数填充的代码:

using (var connection = new OracleConnection(connstring))
{
    connection.Open();
    using (var command = new OracleCommand())
    {
        command.Connection = connection;
        command.CommandText = "FNC_AXA_APPTS";
        command.CommandType = CommandType.StoredProcedure;

        OracleParameter retVal = new OracleParameter("PRS", OracleDbType.RefCursor);
        retVal.Direction = ParameterDirection.ReturnValue;
        command.Parameters.Add(retVal);

        command.Parameters.Add(new OracleParameter("EG_PARAM", OracleDbType.Varchar2, 50)).Value = paramValue;

        command.ExecuteNonQuery();

        using (OracleDataReader reader = ((OracleRefCursor)command.Parameters["PRS"].Value).GetDataReader())
        {
            dt.Load(reader);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下,Oracle函数使用dblink连接SQL数据库.在那些情况下,我得到以下例外......

ORA-01002: fetch out of sequence
ORA-02063: preceding line from GATE_LINK
Run Code Online (Sandbox Code Playgroud)

... GATE_LINKdblink 在哪里.到目前为止,我的研究证实,问题必须在于dblink.

我们正在使用Oracle数据提供程序用于.NET - 它是否可能不支持dblink到SQL Server?或者如果是,我可以在SQL端配置什么来解决这个问题?

我应该提一下,我们通过VPN连接到Oracle DB,连接字符串使用以下格式:

"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1}))(CONNECT_DATA=(SERVICE_NAME={2})));User …
Run Code Online (Sandbox Code Playgroud)

c# sql-server oracle

3
推荐指数
1
解决办法
2851
查看次数

CRM 2015 Linq Count()查询 - 这是枚举查询吗?

我一直在努力为Dynamics CRM 2015 SDK编写Linq查询OrganizationServiceContext.我发现CRM Linq Provider不支持我想要使用的Linq方法.

最新的是Count().我有一个IQuerable<Lead>对象,想要计算枚举时返回的总记录数.但是调用Count()an IQueryable会给出错误:

不支持"Count"方法

挖掘我发现这个建议是将Linq查询定义为IEnumerable.这似乎有效 - 调用Count()IEnumerable<Lead>对象返回总记录.

我想知道的是枚举操作发生的地方.它是动力学方面,还是将所有线索拉入我的网络服务器内存并计数?我首先进行计数的全部原因是为了防止将太大的数据集拉入内存......

linq asp.net sdk dynamics-crm dynamics-crm-2015

3
推荐指数
1
解决办法
994
查看次数

将Web API 2与Kentico一起使用时,SiteContext为null

我已经使用Kentico 9 CMS平台实现了Web API 2(通常遵循Kentico的文档),并且整体上它运行良好.但是,在我的控制器中,我发现SiteContext.CurrentSite总是返回null.这是预期的行为还是我做错了什么?

根据本文档,不确定它是否有所作为,但平台在单个域下托管多个站点.所以我的网站运行在以下网址...

  • domain.com/site1
  • domain.com/site2
  • 等等

......并且API在以下路径下可用...

  • domain.com/site1/customapi
  • domain.com/site2/customapi
  • 等等

目前我不得不使用Request对象来提取请求路径并针对Kentico的站点进行检查,SiteProvider以找到当前请求与哪个Kentico站点相关,但是我不会因为API运行而需要该网站的一部分.

我能做些什么来正确连接它吗?仅供参考我注意到它LocalizationContext.CurrentCulture会返回一个CultureInfo物体,所以它并不像我完全脱离了Kentico的背景......

更新解决方案

感谢@ martin-makarsky提供以下答案.用它来创建以下扩展方法,可以从控制器中调用Request.GetCurrentSite()

public static SiteInfo GetCurrentSite(this HttpRequestMessage request)
{
    return SiteInfoProvider.GetRunningSiteInfo(request.RequestUri.Host, System.Web.HttpRuntime.AppDomainAppPath);
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net kentico asp.net-web-api2

2
推荐指数
1
解决办法
496
查看次数

外部包中定义的操作在 redux 存储中“无法读取未定义的属性‘类型’”

作为我正在进行的学习 React 项目的一部分(我本来就是一个 ASP.NET 人),我遇到了这个问题。我有一套 React 应用程序,我想在其中使用一些常见的 UI 元素,因此我尝试将它们分解为单独的 npm 包。对于共享组件本身,这工作得很好。

但是,其中一些组件依赖于 redux 操作来运行,因此我尝试将这些操作和 reducer 函数捆绑到外部包中。这是我的简化版本actions\index.js

export const SNACKBAR_MESSAGE = "SNACKBAR_MESSAGE";
export const SNACKBAR_HIDE = "SNACKBAR_HIDE";

export function showSnackBarMessage(message) {
    console.log('hit 1');
    return (dispatch, getState) => {
        console.log('hit 2');
        dispatch(hideSnackBar());
        dispatch({
            type: SNACKBAR_MESSAGE,
            message: message
        });
    }
}

export const hideSnackBar = () => {
    type: SNACKBAR_HIDE
};
Run Code Online (Sandbox Code Playgroud)

这是reducer\index.js

import { 
    SNACKBAR_MESSAGE,
    SNACKBAR_HIDE
} from "../actions";

const initialState = {
    snackBarMessage: null,
    snackBarVisible: false
};

export …
Run Code Online (Sandbox Code Playgroud)

javascript npm reactjs redux react-redux

2
推荐指数
1
解决办法
1万
查看次数

从没有范围的 Identity Server 4 请求 API 资源

我正在尝试使用 Identity Server 4 中的 API 资源,并认为一定有我不理解的地方。

我有一个 SPA 客户端应用程序,它需要通过 IdP 对用户进行身份验证,然后代表该用户向 API 资源发出授权请求。API 没有作用域,所以我在 Identity Server 中定义了一些与 API 资源相关的 API 声明,但没有费心为此资源定义任何作用域或作用域声明。

但是,我现在对如何请求访问此 API 资源作为 OIDC 流程的一部分感到困惑。通常我会在授权请求中使用范围,但在这种情况下我没有范围可以使用。所以在我的 实现中IProfileService,当我构建返回的声明时,它context.RequestedResources.ApiResources是空的。

那么,请求提供对无作用域 API 资源的访问的令牌的正确流程是什么?我很确定我在这里遗漏了一些基本的知识,我将摆脱这种谦虚和愚蠢的态度。但是他们说没有愚蠢的问题,对吧?

asp.net openid-connect identityserver4

2
推荐指数
2
解决办法
946
查看次数

尝试在Umbraco 7中使用自定义路由生成sitemap.xml时出错

我建立了一个Umbraco 7网站,并创建了一个Sitemap文档类型,该文档类型在其Razor视图中呈现一个XML网站地图。

可以正常运行,并且可以从URL / sitemap /运行。

我现在正尝试使用自定义路由来使此站点地图可在/sitemap.xml中使用。遵循各种在线建议,我IApplicationEventHandler使用以下方法创建了一个实现:

public void OnApplicationInitialized(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
    //custom route
    RouteTable.Routes.MapUmbracoRoute(
    "sitemap",
    "sitemap.xml",
    new
    {
        controller = "XMLSitemap"
    },
    new XmlSitemapRouteHandler());
}
Run Code Online (Sandbox Code Playgroud)

XmlSitemapRouteHandler器具UmbracoVirtualNodeRouteHandler和覆盖下面的方法:

protected override IPublishedContent FindContent(RequestContext requestContext, UmbracoContext umbracoContext)
{
    var umbracoHelper = new UmbracoHelper(umbracoContext);

    return umbracoHelper.TypedContent(_sitemapNodeId);
}
Run Code Online (Sandbox Code Playgroud)

现在,我有一个非常简单的控制器关联:

public class XMLSitemapController : RenderMvcController
{
    public override ActionResult Index(RenderModel model)
    {
        return this.CurrentTemplate(model);
    }
}
Run Code Online (Sandbox Code Playgroud)

在浏览器中加载/sitemap.xml时,出现以下异常:

值不能为空。参数名称:umbracoContext

这样就行了var umbracoHelper = new UmbracoHelper(umbracoContext);。当我使用UmbracoContext.Current代替时,会得到相同的结果umbracoContext …

c# asp.net-mvc umbraco7

1
推荐指数
1
解决办法
1064
查看次数

将自定义客户端服务添加到 Identity Server 4 后出现 CORS 错误

我已遵循Identity Server 4文档并在本地创建了一个工作测试实例。然后我按照本教程添加了一个示例 Javascript 客户端。这一切工作正常,同时仍然使用测试用户和客户端。

我现在想开始将测试数据分解为生产就绪的服务。我想我应该从我的客户开始。ConfigureServices这是我的方法中的 Identity Server 设置代码Startup

var builder = services.AddIdentityServer()
    .AddDeveloperSigningCredential()
    .AddInMemoryIdentityResources(Config.GetIdentityResources())
    .AddInMemoryApiResources(Config.GetApiResources())
    //.AddInMemoryClients(Config.GetClients())
    .AddTestUsers(Config.GetUsers());

builder.Services.AddTransient<IdentityServer4.Stores.IClientStore, CustomClientStore>();
Run Code Online (Sandbox Code Playgroud)

从字面上看,我在这里唯一更改的是注释掉该AddInMemoryClients行并添加注册新客户端存储的最后一行。现在这个CustomClientStore类所做的只是复制Config.GetClients()测试数据。

但是,当我现在运行演示 Javascript 应用程序并单击“登录”按钮时,我收到以下 Javascript 错误:

跨源请求被阻止:同源策略不允许读取 http://localhost:54458/.well-known/openid-configuration处的远程资源。(原因:CORS 标头“Access-Control-Allow-Origin”丢失)。

http://localhost:54458显然是我的 IS4 实例。我还没有触及我的 CORS 配置,如果我注释掉AddTransient上面的行并恢复该AddInMemoryClients行,一切都会再次正常工作。

谁能帮助我理解这一点?

c# asp.net asp.net-core identityserver4

1
推荐指数
1
解决办法
2977
查看次数