我正在使用asp.net MVC和ASP.net Identity 2.0.
在我的网站上管理员可以选择禁止用户,我希望当用户被禁止他自动从网站注销时.
我知道我可以通过电话退出当前用户
AuthenticationManager.SignOut();
Run Code Online (Sandbox Code Playgroud)
但是可以注销另一个用户吗?或者可能缩短他的会话时间 还是什么?
我知道我可以对控制器进行全局过滤,禁止禁止用户访问但是过滤器会针对每个用户运行,所以我对这个解决方案并不满意.
我正在使用Azure CDN,它指向我的Azure云服务.我已经为我的JS和CSS文件启用了捆绑,而在BundleConfig中我已经设置了bundles.UseCdn = true.
一切都运行正常,除了通过CDN返回的JS和CSS包没有压缩.如果我没有使用CDN,则压缩包返回(我可以看到Content-Encoding是gzip).
我已经在我的CDN上启用了压缩,如下图所示:
在我的ASP.net MVC web.config压缩也启用,它看起来像这样:
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<httpCompression>
<dynamicTypes>
<clear/>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="text/javascript" enabled="true" />
<add mimeType="text/css" enabled="true" />
<add mimeType="application/json" enabled="true" />
<!-- HERE -->
<add mimeType="image/svg+xml" enabled="true" />
<add mimeType="image/png" enabled="true" />
<add mimeType="image/jpg" enabled="true" />
<add mimeType="image/jpeg" enabled="true" />
<add mimeType="application/font-woff2" enabled="true" />
<add mimeType="application/x-font-ttf" enabled="true" />
<add mimeType="application/octet-stream" enabled="true" />
<!-- HERE -->
<add mimeType="*/*" enabled="false" /> …Run Code Online (Sandbox Code Playgroud) 我有控制器A,它将一些数据发送到共享服务和控制器B,它应该读取该数据.问题是控制器B与控制器A位于不同的页面(在同一网站上),即我确实是smth.在控制器A上,单击按钮(将数据发送到服务)并打开另一个页面,其中控制器B应从服务中读取数据.但没有任何反应,所以我的问题是不同页面上的控制器能以这种方式通信吗?
这是我试图这样做但没有运气的方式:
服务:
publicApp.angularModule.service('controllerCommunicationService', function ($rootScope) {
var communicationService = {};
communicationService.data = null;
communicationService.setDataForBroadcast = function(data) {
this.data = data;
this.broadcastData();
};
communicationService.broadcastData = function() {
$rootScope.$broadcast('handleBroadcast');
};
return communicationService;
});
Run Code Online (Sandbox Code Playgroud)
控制器A的相关部分:
publicApp.angularModule.controller('PublicRoutinesCtrl', function ($scope, $rootScope, routinesService, controllerCommunicationService, bootstrapCarouselService) {
$scope.goToNextScreen = function() {
var currentIndex = bootstrapCarouselService.getcurrentSlideIndex();
controllerCommunicationService.setDataForBroadcast($scope.items[currentIndex].Routine.RoutineId);
};
Run Code Online (Sandbox Code Playgroud)
控制器B的相关部分:
$rootScope.$on('handleBroadcast', function () {
console.log("TEST");
$http.post("/EditWorkout/PostRoutineId", { routineId: controllerCommunicationService.data })
.success(function() {
console.log("success");
})
.error(function (responseData) {
console.log("Error !" + responseData);
});
});
Run Code Online (Sandbox Code Playgroud)
甚至console.log("TEST");没有解雇.
我正在使用VS Online + Git进行版本控制,一切都运行良好很长时间,直到昨天,我重新安装了Windows并安装了VS 2015.我已经打开VS并选择了从源代码控制中打开选项并连接到我的VS在线帐户,但当我尝试将项目克隆到我的PC时,我收到错误:
Error encountered while fetching: Invalid redirect to a non-git endpoint
Run Code Online (Sandbox Code Playgroud)
我尝试了很少的东西(大多是随机的,因为我找不到任何有关这个错误的东西)并没有任何帮助.
然后我打开了Git bash并手动将项目克隆到我的电脑上,并且没有任何问题.之后,我在VS中打开了项目并进行了一些更改,在本地进行了剂量更改而没有任何问题,但是当我尝试同步我的项目时,我又遇到了同样的错误.再次,从Git bash将代码推送到服务器没有任何问题.
此外,我试图通过VS +团队资源管理器从另一个VS在线帐户克隆项目,这很好.
请你帮助我好吗 ?
git version-control team-explorer visual-studio-2015 azure-devops
我已经按照这个伟大的教程(链接)选择和Angular(代码几乎相同)
这是我的指示:
app.angularModule.directive('chosen', function() {
var linker = function (scope, element, attrs) {
var list = attrs['chosen'];
scope.$watch(list, function () {
element.trigger('chosen:updated');
});
element.chosen({ width: '350px'});
};
return {
restrict: 'A',
link: linker
};
});
Run Code Online (Sandbox Code Playgroud)
这是html:
<select data-placeholder="Choose a Category" multiple class="col-lg-8 chosen-select" chosen="items"
ng-options="item._backingStore.Name for item in items" ng-model="selectedCategories" >
</select>
Run Code Online (Sandbox Code Playgroud)
我想要的是,当用户点击编辑按钮时,弹出模态窗口,并在模态窗口中选择在单击编辑按钮之前选择的类别.
这是控制器的一部分:
$scope.$watch(function() { return adminCrudService.getCategoriesForUpdate(); }, function() {
$scope.action = "edit";
$scope.categoriesForUpdate = adminCrudService.getCategoriesForUpdate();
if ($scope.categoriesForUpdate.length > null) {
$scope.selectedCategories = _.filter($scope.items, function (item) { …Run Code Online (Sandbox Code Playgroud) 我已经读过,为了连接到Azure Redis缓存,最好遵循以下做法:
private static ConnectionMultiplexer Connection { get { return LazyConnection.Value; } }
private static readonly Lazy<ConnectionMultiplexer> LazyConnection =
new Lazy<ConnectionMultiplexer>(
() =>
{
return
ConnectionMultiplexer.Connect(connStinrg);
});
Run Code Online (Sandbox Code Playgroud)
根据Azure Redis文档:
Azure Redis缓存的连接由ConnectionMultiplexer类管理.此类旨在在整个客户端应用程序中共享和重用,并且不需要基于每个操作创建.
那么在我的ASP.net MVC应用程序中共享ConnectionMultiplexer的最佳实践是什么?它应该在Global.asax中调用,还是应该每个Controller初始化一次,或者smth.别的?
我也有服务,负责与应用程序通信,所以如果我想在服务内部与Redis通信,我应该将ControlMultiplexer的实例发送到控制器的服务,还是应该在我的所有服务中初始化它,或者?
你可以看到我在这里有点迷失,所以请帮忙!
我想知道这个场景是否是线程安全的,是否存在我目前没有看到的问题:
从ASP.net控制器我从非静态类调用非静态方法(此类在另一个项目中,类被注入到控制器中).
这个方法(非静态的)做了一些工作,并调用一些其他静态方法传递userId
最后,静态方法做了一些工作(需要userId)
我相信这种方法是线程安全的,并且如果两个用户同时调用此方法,那么一切都将正确完成(让我们说同样的纳秒).我是正确还是完全错误?如果我错了,在ASP.net项目中使用静态方法的正确方法是什么?
编辑
这是代码:)
这是来自控制器的调用:
await _workoutService.DeleteWorkoutByIdAsync(AzureRedisFeedsConnectionMultiplexer.GetRedisDatabase(),AzureRedisLeaderBoardConnectionMultiplexer.GetRedisDatabase(), workout.Id, userId);
Run Code Online (Sandbox Code Playgroud)
这里DeleteWorkoutByIdAsync的样子如下:
public async Task<bool> DeleteWorkoutByIdAsync(IDatabase redisDb,IDatabase redisLeaderBoardDb, Guid id, string userId)
{
using (var databaseContext = new DatabaseContext())
{
var workout = await databaseContext.Trenings.FindAsync(id);
if (workout == null)
{
return false;
}
databaseContext.Trenings.Remove(workout);
await databaseContext.SaveChangesAsync();
await RedisFeedService.StaticDeleteFeedItemFromFeedsAsync(redisDb,redisLeaderBoardDb, userId, workout.TreningId.ToString());
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
您可以注意到DeleteWorkoutByIdAsync调用静态方法StaticDeleteFeedItemFromFeedsAsync,如下所示:
public static async Task StaticDeleteFeedItemFromFeedsAsync(IDatabase redisDb,IDatabase redisLeaderBoardDd, string userId, string workoutId)
{
var deleteTasks = new List<Task>();
var feedAllRedisVals = await redisDb.ListRangeAsync("FeedAllWorkouts:" + userId); …Run Code Online (Sandbox Code Playgroud) 我不小心删除了链接到数据库的Azure网站,现在我的数据库已经不见了.
有什么办法可以从数据库中恢复数据吗?
我在基于Cordova的应用程序上在iOS上播放本地视频时遇到问题.一开始我想强调,只有当我使用WKWebView时才会出现这个问题,如果使用UiWebView,视频播放就可以了.这是我的情景:
- 用户进入屏幕传递视频网址
-Via FileTransfer我将其下载到手机并将其存储在所需位置
- 使用JS视频加载<video>标记和播放.
基本上我正在回答这个问题所描述的一切.UiWebView的问题是,如果相对路径设置为src,由于某种原因无法加载视频(无论我使用哪种组合),所以这个解决方案对我很有用,因为它基于这行代码:
entry.toURL()
Run Code Online (Sandbox Code Playgroud)
这将返回下载视频的完整路径,这很好,至少对于UiWebView.
WkWebView的问题是entry.toURL()返回smth.像这样:
file:///var/mobile/Containers/Data/Application/3A43AFB5-BEF6-4A0C-BBDB-FC7D2D98BEE9/Documents/videos/Dips.mp4
Run Code Online (Sandbox Code Playgroud)
并且WKWebView不适用于file://协议.此外,WKWebView都不适用于相对路径:(
任何人都可以帮我解决这个问题吗?
是否可以在 TS 中定义interfaceor a type,这将确保如果A定义了 prop,则 propB也必须是(如果A未定义/设置,则B也不能是)。例如我有某事。喜欢:
export interface IExample {
a: string;
b: () => void;
c: boolean;
}
Run Code Online (Sandbox Code Playgroud)
然后,如果我有一些实现的对象,IExample我希望 TS 允许我只拥有 propc或两者a,b并且c如果我只有aandc或band 则抛出编译错误c。
更好的例子是在 React 组件中使用它,就像在这个 SO 问题中一样,或者更好的是我想实现相同的功能,例如:this ReactPropType library。
我试图通过歧视性工会来做到这一点,但我无法让它发挥作用,而且当我有几个像这样的道具(即requriedIf)时,它会变得太复杂,但也许我只是做错了。这是我的代码示例:
export interface INetworkRequestStatusMessageDefaultProps {
testID?: string;
networkRequestStatus: NetworkRequestStatus;
}
export interface INetworkRequestStatusMessageLoadingProps …Run Code Online (Sandbox Code Playgroud) c# ×4
asp.net-mvc ×3
angularjs ×2
azure ×2
javascript ×2
asp.net ×1
azure-cdn ×1
azure-devops ×1
cordova ×1
git ×1
html5-video ×1
ios ×1
reactjs ×1
redis ×1
typescript ×1
video ×1