安装Visual Studio 2015 RC后,我开始遇到此问题; 我无法再从Visual Studio 2013调试Web项目.
我的项目构建正常,VS启动浏览器 - 我可以在输出中看到iisexpress.exe加载项目的所有相关DLL,但是当我希望看到我的网站时,iisexpress.exe停止运行并且Visual Studio停止调试.所有输出窗口告诉我的是:
The program '[3724] iisexpress.exe: Program Trace' has exited with code 0 (0x0).
The program '[3724] iisexpress.exe' has exited with code -532462766 (0xe0434352).
Run Code Online (Sandbox Code Playgroud)
查看事件查看器,我看到iisexpress.exe的以下崩溃信息:
Faulting application name: iisexpress.exe, version: 8.0.8418.0, time stamp: 0x4fbaa9e8
Faulting module name: KERNELBASE.dll, version: 6.1.7601.23040, time stamp: 0x553e86a2
Exception code: 0xe0434352
Fault offset: 0x0000c44d
Faulting process id: 0x1b40
Faulting application start time: 0x01d094d5c74c69d5
Faulting application path: C:\Program Files (x86)\IIS Express\iisexpress.exe
Faulting module path: C:\Windows\syswow64\KERNELBASE.dll
Run Code Online (Sandbox Code Playgroud)
我已经尝试重新安装IIS,删除我的本地IISExpress文件夹,但仍然没有运气.任何人都知道如何让IIS再次运行?
我已经设置了一个OWIN授权服务器和几个公开ASP.NET Web API的资源服务器.我从授权服务器提供特定于每个资源服务器的JWT(这个想法是每个资源服务器需要在其令牌中包含自定义声明).
这些服务器都在Intranet环境中,我们历来使用Windows身份验证(Kerberos)来提供单点登录体验.此功能在我的实现中已丢失,因为我使用用户的用户名和密码(针对AD进行身份验证)来授予令牌.我想知道的是,是否有办法获得单点登录体验 - 也许通过使用Windows身份验证来确定用户的身份,然后授予他们一个令牌?
我觉得这有点不正统,可能会很愚蠢 - 所以请告诉我是否有更好的替代方法在Intranet环境中使用OAuth 2.0获取SSO.
我正在尝试将自定义中间件注入到我的OWIN管道中,该管道包装StaticFileMiddleware
来自MS 的可用,以支持AngularJS中的HTML 5模式.我一直在关注这个指南:http://geekswithblogs.net/shaunxu/archive/2014/06/10/host-angularjs-html5mode-in-asp.net-vnext.aspx
从我可以收集到的如何工作,我的中间件将请求传递给静态文件中间件,然后如果它无法解决这些请求(即,请求HTML 5角度路径,"/无论如何"),它返回基本角度页面,以便对HTML 5路径的硬请求将起作用.
我的问题是调用内部中间件的结果似乎总是200状态代码,即使在我的浏览器中我得到404,这让我挠头.这是我的代码供参考:
public static class AngularServerExtension
{
public static IAppBuilder UseAngularServer(this IAppBuilder builder, string rootPath, string entryPath)
{
var options = new AngularServerOptions()
{
FileServerOptions = new FileServerOptions()
{
EnableDirectoryBrowsing = false,
FileSystem = new PhysicalFileSystem(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, rootPath))
},
EntryPath = new PathString(entryPath)
};
builder.UseDefaultFiles(options.FileServerOptions.DefaultFilesOptions);
return builder.Use(new Func<AppFunc, AppFunc>(next => new AngularServerMiddleware(next, options).Invoke));
}
}
public class AngularServerMiddleware
{
private readonly AngularServerOptions _options;
private readonly AppFunc _next;
private readonly StaticFileMiddleware _innerMiddleware; …
Run Code Online (Sandbox Code Playgroud) 我试图指示我的ASP.NET Core MVC应用程序使用第三方DI容器.而不是写一个适配器,我试图按照这篇文章中的建议插入库
这很好用 - 我可以IControllerActivator
用我自己的内置替换使用DI容器的内置.但是,在尝试实例化依赖注入依赖项的自定义中间件时,我遇到了障碍.ASP.NET无法解决这些依赖关系,因为它没有使用我的第三方DI容器 - 是否有相当于IControllerActivator
中间件,或者我是否坚持使用内置DI或编写适配器?
**编辑**
这是我的一些代码 - 我实际上是尝试使用上面的模式使用Ninject.
internal sealed class NinjectControllerActivator : IControllerActivator
{
private readonly IKernel _kernel;
public NinjectControllerActivator(IKernel kernel)
{
_kernel = kernel;
}
[DebuggerStepThrough]
public object Create(ActionContext context, Type controllerType)
{
return _kernel.Get(controllerType);
}
}
Run Code Online (Sandbox Code Playgroud)
我发现我有两个问题:
有关第一个问题的示例,这里是一个无法实例化的控制器,因为我正在使用IUrlHelper
(还要注意ILogger
,它也无法实例化):
public class SystemController : Controller
{
public SystemController(ILogger logger, IUrlHelper urlHelper)
{
/*...*/
}
}
Run Code Online (Sandbox Code Playgroud)
以下是自定义中间件的第二个问题示例:
public class CustomMiddleware
{
private …
Run Code Online (Sandbox Code Playgroud) 我在IE11中遇到一个非常奇怪的问题,即使我通过AngularJS设置它,浏览器也会覆盖我的请求中的Authorization标头.
基本上,我有一个HTTP拦截器注册所有看起来像这样的请求:
AuthInterceptorService.request = function (config) {
config.headers.Authorization = "Bearer " + bearerToken;
}
Run Code Online (Sandbox Code Playgroud)
这适用于所有浏览器(甚至在特定条件下的IE).我在IIS中设置了我的应用程序以允许匿名身份验证,并且我已为此子网站禁用了基本/集成身份验证,但是,父配置具有Windows身份验证eabled.
偶尔会发生的是浏览器会向根URL发出静态文件请求(比方说/favicon.ico
).使用401拒绝此请求.浏览器使用协商身份验证进行响应并获取favicon.此时,所有其他浏览器仍然让我的代码设置Authorization标头,但是一旦在IE中进行了这种集成身份验证,授权标头似乎就会卡住 - 无论我的代码是什么,授权标头总是使用集成身份验证.这会导致对我的API的所有请求失败,因为不存在Bearer令牌.
我能够通过指定更本地的favicon(静态文件可以匿名提供)来解决favicon问题,但我想知道是否有一个不那么苛刻的解决方案来解决这个问题.即使在先前的请求中进行了Windows身份验证,我是否能以某种方式说服IE让我设置授权标头?
注意:我发现这个问题似乎是相关的(也许是相同的根本原因).
authentication internet-explorer windows-authentication angularjs bearer-token
假设我有一个config.json
这样的:
{
"CustomSection": {
"A": 1,
"B": 2
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用IConfiguration
对象来获取特定设置,即 ,configuration.Get("CustomSection:A")
但是我可以获取整个层次结构(任何类型 - 即使是原始字符串也可以)?当我尝试时configuration.Get("CustomSection")
,我得到了null
结果,所以我认为默认情况下不支持。
我的用例是一次获取整个配置字典,而不必获取每个单独的设置 - 在编译时可能不知道某些属性。
我正在尝试实现JWT令牌,但仍然遇到以下异常:IDX10640:不支持算法:' http : //www.w3.org/2001/04/xmldsig-more#hmac-sha256 '尝试写入时用于压缩json字符串的标记.
const string issuer = "issuer";
const string audience = "audience";
byte[] keyForHmacSha256 = new byte[32];
new Random().NextBytes(keyForHmacSha256);
var claims = new List<Claim> { new Claim("deviceId", "12") };
var now = DateTime.UtcNow;
var expires = now.AddHours(1);
var signingCredentials = new SigningCredentials(
new SymmetricSecurityKey(keyForHmacSha256),
SecurityAlgorithms.HmacSha256Signature, SecurityAlgorithms.Sha256Digest);
var token = new JwtSecurityToken(issuer, audience, claims, now, expires, signingCredentials);
return _tokenHandler.WriteToken(token);
Run Code Online (Sandbox Code Playgroud)
解决这个问题的任何想法?
更新1:
"System.IdentityModel.Tokens.Jwt"出现上述错误:"5.0.0-beta7-208241120"
更新2:
更新的代码
我在尝试将字符串解析为 NodaTime LocalDate 时遇到问题。我的代码如下所示:
var value = "Monday, May 26, 2014";
var pattern = LocalDatePattern.CreateWithInvariantCulture("d");
var parseResult = pattern.Parse(value);
var localDate = parseResult.GetValueOrThrow();
Run Code Online (Sandbox Code Playgroud)
这总是导致 UnparsableValueException:
附加信息:值字符串与格式字符串“MM”中所需的数字不匹配。
据我所知,我的值应该符合标准模式(当我查看模式的示例模板值时,它看起来与我试图解析的值非常相似)。我在这里缺少什么?
编辑
我将代码更改为以下内容,但仍然收到类似的错误:
var value = "Monday, May 26, 2014";
var pattern = LocalDatePattern.CreateWithInvariantCulture("dddd, dd MMMM, yyyy");
var parseResult = pattern.Parse(value);
var localDate = parseResult.GetValueOrThrow();
Run Code Online (Sandbox Code Playgroud)
导致另一个 UnparsableValueException:
附加信息:值字符串与格式字符串“dd”中所需的数字不匹配。
伙计我做错了什么?
if (numberstring.intValue <=15) {
rankLabel.text = @"A1";
}
else if (numberstring.intValue >16 && <=40){
rankLabel.text = @"A2";
}
Run Code Online (Sandbox Code Playgroud)
我在"<= 40"上收到错误..
我正在尝试根据iPhone屏幕大小更改字体大小.
我设置了一个在iPhone 6 Plus上看起来不错的字体大小,一旦我检测到iPhone并且它不是iPhone 6 Plus,我就改变它的大小.
我正在尝试这个ViewDidLoad
事件:
lblLogin.Font.WithSize(17f);
Run Code Online (Sandbox Code Playgroud)
但它不是更新FontSize,我猜"Font.WithSize"不是实现它的路径,任何想法?
c# ×4
angularjs ×2
asp.net ×2
asp.net-core ×2
owin ×2
.net ×1
adal ×1
bearer-token ×1
c ×1
config.json ×1
if-statement ×1
iis-express ×1
ios ×1
iphone ×1
json ×1
jwt ×1
ninject ×1
nodatime ×1
oauth-2.0 ×1
objective-c ×1
xamarin.ios ×1