在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) 我一直在努力为Dynamics CRM 2015 SDK编写Linq查询OrganizationServiceContext.我发现CRM Linq Provider不支持我想要使用的Linq方法.
最新的是Count().我有一个IQuerable<Lead>对象,想要计算枚举时返回的总记录数.但是调用Count()an IQueryable会给出错误:
不支持"Count"方法
挖掘我发现这个建议是将Linq查询定义为IEnumerable.这似乎有效 - 调用Count()该IEnumerable<Lead>对象返回总记录.
我想知道的是枚举操作发生的地方.它是动力学方面,还是将所有线索拉入我的网络服务器内存并计数?我首先进行计数的全部原因是为了防止将太大的数据集拉入内存......
我已经使用Kentico 9 CMS平台实现了Web API 2(通常遵循Kentico的文档),并且整体上它运行良好.但是,在我的控制器中,我发现SiteContext.CurrentSite总是返回null.这是预期的行为还是我做错了什么?
根据本文档,不确定它是否有所作为,但平台在单个域下托管多个站点.所以我的网站运行在以下网址...
......并且API在以下路径下可用...
目前我不得不使用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) 作为我正在进行的学习 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) 我正在尝试使用 Identity Server 4 中的 API 资源,并认为一定有我不理解的地方。
我有一个 SPA 客户端应用程序,它需要通过 IdP 对用户进行身份验证,然后代表该用户向 API 资源发出授权请求。API 没有作用域,所以我在 Identity Server 中定义了一些与 API 资源相关的 API 声明,但没有费心为此资源定义任何作用域或作用域声明。
但是,我现在对如何请求访问此 API 资源作为 OIDC 流程的一部分感到困惑。通常我会在授权请求中使用范围,但在这种情况下我没有范围可以使用。所以在我的 实现中IProfileService,当我构建返回的声明时,它context.RequestedResources.ApiResources是空的。
那么,请求提供对无作用域 API 资源的访问的令牌的正确流程是什么?我很确定我在这里遗漏了一些基本的知识,我将摆脱这种谦虚和愚蠢的态度。但是他们说没有愚蠢的问题,对吧?
我建立了一个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 …
我已遵循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行,一切都会再次正常工作。
谁能帮助我理解这一点?
asp.net ×4
c# ×4
asp.net-core ×1
asp.net-mvc ×1
dynamics-crm ×1
javascript ×1
kentico ×1
linq ×1
npm ×1
oracle ×1
react-redux ×1
reactjs ×1
redux ×1
sdk ×1
sql-server ×1
umbraco7 ×1