对于一个项目,我需要一种加载部分视图的动态方法,最好是通过jquery/ajax.
这是我需要的功能:
在可能的情况下,这应该都是ajaxified.
我已经阅读了有关动态加载partials的一些内容,但我想重新发布完整的案例,以便为这个特定案例找到最佳解决方案.
我想知道是否有办法完成以下任务:
在我的项目中,我定义了一个界面,让我们说IFruit.此接口具有公共方法GetName().我还声明了一个接口IApple,它实现了IFruit并公开了一些其他方法,比如GetAppleType()等.有更多的水果,如IBanana,ICherry,等等.
现在在外面,我只希望能够使用实际的水果实现而不是IFruit本身.但我不能将IFruit接口声明为私有或内部接口,因为继承的接口会说"无法实现,因为基类不易访问".
我知道这可以通过抽象实现来实现,但在这种情况下这不是一个选项:我真的需要使用接口.有这样的选择吗?
更新 我想我的例子需要一些澄清:)我使用MEF来加载接口实现.加载的集合基于IApple,IBanana,ICherry等.但IFruit本身是无用的,我不能仅使用基于该接口的类.所以我一直在寻找一种方法来阻止其他开发人员单独实施IFruit,认为他们的类会被加载(它不会被加载).所以基本上,它归结为:
internal interface IFruit
{
public string GetName();
}
public interface IApple : IFruit
{
public decimal GetDiameter();
}
public interface IBanana : IFruit
{
public decimal GetLenght();
}
但由于基础接口不易访问,因此无法编译.
我正在使用Cordova构建我的第一个移动应用程序.后端服务存在于Azure上,因此我正在尝试使用Cordova的ADAL插件来进行身份验证.
首先,我发现该库不会像Angular的ADAL库那样进行拦截.我在我的Cordova应用程序中使用Angular,与外观的材料设计指令配对.拦截本来会很好,但据我所知,目前还不存在(应该知道实施的难度).
所以我现在写了一个服务,它将负责向Azure发送REST api请求,包括正确的身份验证令牌.它基于此处的示例.
这就是我想出的:
var request = function(url)
{
createContext()
.then(function () {
getAuthToken().then(
function(token) {
sendRequest(token, url);
})
},
function (err) {
$log.error("Failed to create a context.");
});
};
Run Code Online (Sandbox Code Playgroud)
首先,它将创建身份验证上下文:
function createContext () {
return $q(function (resolve, reject) {
var authenticationContext = Microsoft.ADAL.AuthenticationContext;
authenticationContext.createAsync(authority)
.then(function (context) {
authContext = context;
$log.log("Created authentication context for authority URL: " + context.authority);
resolve();
}, function (err) {
$log.error("Failed to create authentication context: " + pre(err))
reject();
});
});
}; …Run Code Online (Sandbox Code Playgroud) angularjs cordova azure-active-directory adal visual-studio-cordova
我们已经实现了如下设置:
现在我们看到的是两件事:
因此,API 管理实例似乎无法解析我们在 Azure 中设置的自定义 DNS 区域。我找不到任何信息告诉我是否支持这种情况。确实非常欢迎任何可能有助于找到问题的指针。
更新当我们通过上传文件注册API,然后尝试调用其中一个API方法时,出现以下错误:
The remote name could not be resolved
Run Code Online (Sandbox Code Playgroud)
这个相同的地址从完全相同的 VNet 中的 VM 解析得很好。
我对要创建的视图有疑问.我有两个表在左外连接一起,说tableA和tableB,那里tableB是左外连接.
我想只选择表B中状态等于4的那些行,所以我添加WHERE state = 4到我的查询中.现在结果集被修剪了很多,因为没有匹配行的所有行都tableB从结果中删除(因为这些行的状态不是4).我也尝试过WHERE state = 4 OR state IS NULL,也不起作用(因为state技术上不是NULL没有状态时).
所以我需要的是一个WHERE只在实际存在行时进行评估的语句,是否存在这样的事情?
如果不是,我会看到两个选项:join (SELECT * FROM tableB WHERE state = 4)而不是表B,或创建具有相同WHERE语句的视图并将其加入.明智的选择是什么?
顺便说一句,这是SQL Server 2008 R2.
我们正在重新思考我们的开发环境.目前,我们都有Elitebook笔记本电脑,它们并不像我们想的那么快.我们正在考虑将我们的开发环境虚拟化为中央VM服务器.
我们的开发人员在Visual Studio中工作并使用SQL Server作为数据库.我们还有一些SharePoint开发人员需要一台适用于SharePoint 2010的64位Win2k8计算机.这些计算机已经是具有自己的本地SQL Server安装的虚拟机.
每个开发人员的计算机或VM都安装了SQL Server.这需要来自所有盒子的资源,并且在与项目团队合作时具有挑战性.因此,我们正在研究将资源集中到单个数据库服务器的可能性.该框必须运行多个SQL Server实例(每个Sharepoint开发人员需要一个单独的开始).我们还需要安装较旧的SQL Server 2005和SQL Server 2000以实现向后兼容.除了SQL Server框之外,该计划还包含一个安装了开发工具的每个开发人员的VM会话.因此,开发人员可以将RDP引入开发环境,拥有自己的映像并利用集中式数据库服务器.测试服务器也将在同一环境中进行虚拟化.
我正在寻找有关此事的一些提示和最佳做法.例如:
我正在寻找一种向 PDF 文档添加额外图层的方法。该图层应该位于现有图层的顶部,并且应该显示我想放在那里的文本,有点像水印。目前我们有办法做到这一点,但这只是将文本添加到嵌入在 PDF 中的图片上,这不是我想要的。如果有图书馆(免费的会很棒)可以做到这一点,任何人都有任何想法?
我在UWP(Windows 10)项目中运行调试模式以进行单元测试时遇到问题.抛出的错误是:
Unable to attach to CoreCLR. Interop debugging is not supported.
测试窗口的输出显示:
Deployment complete (0:00:00,932). Full package name: "d13697af-b51e-4d46-bbce-4f4b89a44a95_1.0.0.0_x64__h20887da7bcmm"
A user callback threw an exception. Check the exception stack and inner exception to determine the callback that failed.
Run Code Online (Sandbox Code Playgroud)
真奇怪的是,每次都不会发生这种情况.我现在已成功调试了几次单元测试,直到失败.补救措施似乎是清理解决方案并重建,之后有时(并非总是)再次尝试几次尝试.然后它开始失败,我需要再次清理.
我正在为Windows 10 build 10586构建,选择另一个版本似乎并没有做出与众不同.
我一整天都在这里,它正在推动我努力.我在Azure上发布了一个使用Azure AD身份验证保护的Web API.我已经将这个API与移动应用程序结合使用了很长一段时间.在移动应用程序上,我使用库进行客户端身份验证(位于AD中的Microsoft帐户),这非常有效.在应用程序中,API请求通过X-ZUMO-AUTH标头进行身份验证.
现在,对于应用程序的新部分,我有一个C#控制台应用程序,它也需要能够调用该应用程序.这需要独立运行,因此无需请求用户凭据.所以我在Azure AD中创建了一个应用程序,赋予它对Web API实例的权限,并为我提供了一些代码来获取身份验证令牌.然后该标记将传递到HttpClient对象中:
AuthenticationContext ac = new AuthenticationContext(authority);
ClientCredential clientCred = new ClientCredential(clientID, clientSecret);
AuthenticationResult authenticationResult = await ac.AcquireTokenAsync(resource, clientCred);
string authToken = authenticationResult.AccessToken;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, endpoint);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authToken);
HttpResponseMessage response = await client.SendAsync(request);
Run Code Online (Sandbox Code Playgroud)
服务器身份验证的设置如下:
string aadTenant = configProvider.GetConfigurationSettingValue("ida.Tenant");
string aadAudience = configProvider.GetConfigurationSettingValue("ida.Audience");
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = aadTenant,
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = aadAudience
},
});
Run Code Online (Sandbox Code Playgroud)
我已经检查了所有变量.我还验证了Bearer令牌是否正确传递给服务(Fiddler显示它).一切似乎都很好,但仍然,服务器继续响应未经授权 …
到目前为止,我们一直在使用Azure VM来构建应用程序。由于法律要求,我们被指示将这些活动转移到位于代理后面的本地服务器上。现在,我看到构建失败并显示以下日志消息:
##[error]getaddrinfo ENOTFOUND dist.nuget.org dist.nuget.org:443
Run Code Online (Sandbox Code Playgroud)
所以我假设这可能是由于nuget代理配置。因此,我尝试添加具有正确代理设置的nuget.config文件,然后将其检查到解决方案中,但这没有任何改变。还尝试下载CLI并设置nuget代理配置设置,但同样无济于事。
奇怪的是;当我从cmd在本地运行命令时,一切正常!所以我一定在这里想念什么,但是呢?
c# ×4
.net ×1
adal ×1
angularjs ×1
asp.net-mvc ×1
azure ×1
cordova ×1
inheritance ×1
interface ×1
nuget ×1
oauth ×1
pdf ×1
proxy ×1
sharepoint ×1
sql ×1
sql-server ×1
unit-testing ×1
uwp ×1
vnet ×1