我在防火墙内的Windows Server 2012 R2主机上部署了一个angularjs站点到IIS.当我RDP进入服务器,然后从那里导航到
http://localhost/Foo
Run Code Online (Sandbox Code Playgroud)
在IE11中,一切都像预期的那样;我的页面被提供给浏览器.
但是,当我尝试浏览时
http://servername/Foo
Run Code Online (Sandbox Code Playgroud)
在IE11中,我从angular.js的第1016行引发错误
"对象不支持属性或方法'querySelector'"
这仅发生在Internet Explorer中.
在Chrome和Firefox中测试的一切都很好.
有没有人知道为什么会发生这种情况以及我可以采取哪些措施来解决这个问题?
在我的客户端工作站上,我安装的VS2012带有一个堆栈溢出集成搜索栏,位于快速启动旁边.它看起来像这样:

这个问题是它很酷,我想把它添加到我的个人机器上,但是没有人知道它是如何进入我的机器或在哪里找到它的.我知道这个问题之前没有被问到堆栈溢出,因为visual studio告诉我,包含在下面的图片中

我目前安装到visual studio的唯一扩展包含在下面的屏幕截图中,并且与我所有同事的安装一致.这就是为什么我这样做有点令人费解,而他们没有.

还有其他人有吗?你在哪里得到它?
有没有人有一个如何以角度发送和接收window.postMessage()调用的工作示例?我在github和ngmodules上找到了ng-post-message模块,但是我看一下这段代码并没有给我带来很大的意义,而且文档缺乏一个有效的例子.
风景
<div simulation-host element="thing in things"></div>
</div>
<div id="debugConsole">
<h1>MESSAGE CONSOLE</h1>
<p id="debugText"></p>
</div>
Run Code Online (Sandbox Code Playgroud)
该模型
$scope.things =
[
{
"location" : "Foobar",
"resource" : $sce.trustAsResourceUrl("http://external.domain:14168/Foo/Bar"),
"title" : "Launch"
}
];
Run Code Online (Sandbox Code Playgroud)
我尝试了一个指令
var simulationFrameHost = angular.module('proxy.directives', []);
simulationFrameHost.config(function ($sceDelegateProvider){
//URL Regex provided by Microsoft Patterns & Practices.
$sceDelegateProvider.resourceUrlWhitelist(['^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$','self']);
});
simulationFrameHost.directive('simulationHost', ['$window',function($window) {
return {
retrict: 'ACE',
transclude: 'element',
replace: true,
scope: true,
template: [
'<ul>',
'<li>',
'<span>',
'<a href="#">',
'{{thing.location}}',
'</a>',
'</span>',
'<messenger>',
'<iframe ng-src="{{thing.resource}}" />',
'</messenger>', …Run Code Online (Sandbox Code Playgroud) 任何人都可以解释防止表值参数被设置为存储过程的输出参数背后的设计决策吗?
我无法计算我开始构建数据模型的次数,希望完全锁定我的表到外部访问(你知道......实现细节),只允许应用程序通过存储过程访问数据库(你知道...数据接口)并与TVP来回沟通只是为了让SSMS打电话让我顽皮地认为我可以使用用户定义的表类型作为我的数据服务和我的应用程序之间的传输对象.
所以有人请给我一个很好的理由为什么TVP被设计为只读输入参数.
所以我继续修补这个.这是一个带有IIS 8.5的新Windows Server.我从来没有遇到任何问题让CORS在IIS中"正常工作",所以我从来没有真正需要关心服务器配置中的繁琐位.立即解决的问题是猎枪方法; 我通过对applicationhost.config进行以下修改来启用服务器范围内的CORS
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
Run Code Online (Sandbox Code Playgroud)
但删除此customHeader并[EnableCors(origins: "*",headers: "*", methods: "*")]在我的控制器内设置不会导致服务器发回Access-Control-Allow-Origin响应标头(是的,我确保调用config.EnableCors()我的HttpConfiguration.
另一个复杂因素是使用这种方法,我必须允许所有来源,因为我需要几个来源才能访问此服务器.浏览器实现不允许在此标头中从服务器发回多个源.我总是可以EnableCors在我的应用程序中编写自己的逻辑,但宁愿理解并修复服务器配置以保留在res上.
所以我试图在我们的服务器配置团队直接在新的Windows Server 2012 R2上部署到IIS 8.5的Web应用程序上遇到了一些问题.我的应用程序是一个启用了Cors的Web API(目前允许所有来源),但服务器没有向调用客户端返回Access-Control-Allow-Origin标头.我从未遇到过Web API Cors"只是工作"的问题.
我找到了这个资源,但确认OPTIONSVerbHandler已经在我的应用程序的web.config中删除了.
我尝试将一个customHeader添加到IIS,但每当我这样做时,服务器开始返回500秒.
有什么办法可以强制 IIS 8.5从ASP.NET发送Access-Control-Allow-Origin标头吗?
所以我显然在我的解决方案中安装了ASP.NET Cross Origin Resource Sharing NuGet包,而不是ASP.NET Web API 2.2跨源资源共享NuGet包.我把这些换掉了,我的CORS功能有限(但仍然是意外的).我将描述我现在遇到的奇怪现象.
所以在我意识到我有错误的NuGet包之前,我已经进入了applicationHost.config并添加了
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
Run Code Online (Sandbox Code Playgroud)
试图让服务器手动推回头.如果没有的NuGet更新,这并没有设置页眉上预检反应,但在这一点上我不太知道这是因为我忘了一个IISRESET;我试图快速移动.
无论如何,当我添加Web API 2.2 CorsNuGet包时,我的服务器响应开始发出Access-Control-Allow-Origin带有通配符源的头,而不是我在Web API路由中的EnableCors属性中设置的头.因此,使用该值,我知道它是配置的customHeader,而不是EnableCorsAttribute现在控制值.
(这里是奇怪的地方)所以我真的更喜欢能够直接在服务器级别直接控制CORS白名单,所以我继续将customHeader设置为
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://segment.mydomain.com" …Run Code Online (Sandbox Code Playgroud) 我的问题是:
这是从我的WebAPI控制器发回的响应.
"[
[
{\"id\":\"identifier\"},
{\"name\":\"foobar\"}
]
]"
Run Code Online (Sandbox Code Playgroud)
请注意,响应包含在引号中,并且所有嵌入的引用都被转义.这显然是个问题.我可以为JSON.NET Serializer提供任何设置以防止这种情况发生吗?
正如pswg在他的回答中猜到的那样,我正在使用JSON.NET
JsonConvert.SerializeObject(instance)
Run Code Online (Sandbox Code Playgroud)
执行我的序列化.
我这样做是因为当我构建我的自定义转换器时,我将它们包含在我的WepApiConfig中的JsonConvert.DefaultSettings中(我显然认为这不是问题)
我之前尝试将我的HttpGets的返回类型交换为"我的对象类型",响应是我对象的ToString()方法的json表示...这让我知道序列化没有通过我的转换器.
将我的HttpGets的返回类型从字符串更改为"我的对象类型"并将这些转换器直接插入到WebAPi的默认HttpConfiguration中就可以了.
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter());
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());
Run Code Online (Sandbox Code Playgroud)
十分简单.
我有一个ApiController响应POST请求,通过HTTP的状态码307重定向它.它只使用标题中的信息,因此此操作不需要请求的主体.此操作相当于:
public HttpResponseMessage Post() {
var url;
// Some logic to construct the URL
var response = new HttpResponseMessage(HttpStatusCode.TemporaryRedirect);
response.Headers.Location = new System.Uri(url);
return response;
}
Run Code Online (Sandbox Code Playgroud)
这很简单,但我想做一个改进.请求正文可能包含大量数据,因此我想利用HTTP状态代码100来提高此请求的效率.使用现在的控制器,对话可能如下所示:
> POST /api/test HTTP/1.1
> Expect: 100-continue
> ...
< HTTP/1.1 100 Continue
> (request body is sent)
< HTTP/1.1 307 Temporary Redirect
< Location: (the URL)
< ...
Run Code Online (Sandbox Code Playgroud)
由于重定向操作不需要请求主体,我希望能够将会话缩短为:
> POST /api/controller HTTP/1.1
> Expect: 100-continue
> ...
< HTTP/1.1 307 Temporary Redirect
< Location: (the URL)
< ...
Run Code Online (Sandbox Code Playgroud)
我花了一天的时间来研究如何实现这一目标,但我还没有找到解决方案.在我的研究中,我学到了: …
表示配置注释中的以下信息:
// Setup the CORS middleware to run before SignalR.
// By default this will allow all origins. You can
// configure the set of origins and/or http verbs by
// providing a cors options with a different policy.
map.UseCors(CorsOptions.AllowAll);
Run Code Online (Sandbox Code Playgroud)
但是,System.Web.CorsPolicy的Origins属性有一个私有的setter,没有允许注入源的构造函数,也没有暴露的setter方法.关于Origins列表,它似乎只暴露了一个"AllowAllOrigins"属性,然后是一个无用的Origins getter,它只反映出在CorsPolicy构造过程中构造的空List.
特别值得注意的是,默认的app.UseCors(CorsOptions.AllowAll)设置完全不连贯.通过它自己的工具提示,它是"允许所有标题,所有方法,任何来源和支持凭证的策略."
A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true
Run Code Online (Sandbox Code Playgroud)
我的配置目前是"愚蠢的简单"SignalR配置
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供一个Microsoft.Owin.Cors.CorsMiddleware示例,该示例将使用Access-Control-Allow-Origin的显式白名单重新实现"AllowAll"选项吗?
我在我的 iis 上托管 bonobo git 服务器,并将配置选项保留为默认值,这意味着它应该使用其内部成员资格服务。每当我导航到我的服务器时,在注册任何用户之前,系统都会提示我登录屏幕,并且我尝试过的操作组合都没有引导我进入会员注册页面。
谁能帮我弄清楚如何填充倭黑猩猩的内部会员数据库?
该文档似乎不存在。
所以我需要将一个组合序列化为JSON(使用JSON.NET),并且希望能够快速获得这个问题.
我有一个非常基本的复合实现,我只是试图用来支撑我的服务和数据结构,但JSONSerializer只是序列化根节点.
码:
namespace Data
{
public abstract class Element
{
protected string _name;
public Element(string name)
{
_name = name;
}
public abstract void Add(Element element);
public string Name { get { return _name; } }
}
public class ConcreteElement : Element
{
public ConcreteElement(string name) : base(name) { }
public override void Add(Element element)
{
throw new InvalidOperationException("ConcreteElements may not contain Child nodes. Perhaps you intended to add this to a Composite");
}
}
public class Composite: Element …Run Code Online (Sandbox Code Playgroud)