在我的应用程序中,我需要为几乎所有响应添加标题。
然而,中间件不会为我解决这个问题,因为其他一些中间件设置了一个完全新鲜的响应,结束了管道,我没有看到:
app.Use((context, next) =>
{
context.Response.Headers.Add("MyHeader", "IsCool");
return next();
});
app.UseSomeOtherMiddleware(); // This ends the pipeline after removing my `MyHeader`
我无法在违规的中间件之后添加另一个中间件,因为管道已经完成。
我可以为它添加web.config
条目:
但正如我所说,这需要添加到几乎所有响应中。我只需要一点点逻辑来确定我是否添加它,web.config
解决方案不能提供给我。
那么我怎么能在ASP.NET 5中这样做呢?在完成一切后,我怎样才能进入管道?
答案 0 :(得分:3)
正确实施RC2
<script>
var map;
function initialize() {
var center = new google.maps.LatLng(37.422, -122.084058);
map = new google.maps.Map(document.getElementById('map'), {
center: center,
zoom: 13
});
var request = {
location: center,
radius: 8047,
types: ['restaurant']
};
var service = new google.places.PlaceService(map);
service.nearbySearch(request, callback);
}
function callback(results, status) {
if(status == google.maps.places.PlacesServiceStatus.OK){
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
}
}
}
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
答案 1 :(得分:2)
您可以使用HttpContext.Response.OnStarting注册回调,并在发送之前修改标题。
答案 2 :(得分:-1)
我想我通过创建如下的中间件解决了这个问题:
public class MyMiddleware
{
RequestDelegate _next;
public MyMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
await _next(context);
context.Response.Headers.Add("MyHeader", "IsCool");
}
}
在Startup.cs
中使用以下内容:
app.UseMiddleware<MyMiddleware>();