本文整理汇总了C#中Func.MustNotNull方法的典型用法代码示例。如果您正苦于以下问题:C# Func.MustNotNull方法的具体用法?C# Func.MustNotNull怎么用?C# Func.MustNotNull使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Func
的用法示例。
在下文中一共展示了Func.MustNotNull方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ConnectionTimeout
/// <summary>
/// Timeouts the connection if there hasn't been an read activity on the request body stream or any
/// write activity on the response body stream.
/// </summary>
/// <param name="builder">The IAppBuilder instance.</param>
/// <param name="getTimeout">A delegate to retrieve the timeout timespan. Allows you
/// to supply different values at runtime.</param>
/// <returns>The IAppBuilder instance.</returns>
public static IAppBuilder ConnectionTimeout(this IAppBuilder builder, Func<TimeSpan> getTimeout)
{
builder.MustNotNull("builder");
getTimeout.MustNotNull("getTimeout");
return ConnectionTimeout(builder, new ConnectionTimeoutOptions(getTimeout));
}
示例2: MaxUrlLength
/// <summary>
/// Limits the length of the URL.
/// </summary>
/// <param name="getMaxUrlLength">A delegate to get the maximum URL length.</param>
/// <param name="loggerName">(Optional) The name of the logger log messages are written to.</param>
/// <returns>An OWIN middleware delegate.</returns>
/// <exception cref="System.ArgumentNullException">getMaxUrlLength</exception>
public static MidFunc MaxUrlLength(Func<RequestContext, int> getMaxUrlLength, string loggerName = null)
{
getMaxUrlLength.MustNotNull("getMaxUrlLength");
loggerName = string.IsNullOrWhiteSpace(loggerName)
? "LimitsMiddleware.MaxUrlLength"
: loggerName;
var logger = LogProvider.GetLogger(loggerName);
return
next =>
env =>
{
var context = new OwinContext(env);
int maxUrlLength = getMaxUrlLength(new RequestContext(context.Request));
string unescapedUri = Uri.UnescapeDataString(context.Request.Uri.AbsoluteUri);
logger.Debug("Checking request url length.");
if (unescapedUri.Length > maxUrlLength)
{
logger.Info(
"Url \"{0}\"(Length: {2}) exceeds allowed length of {1}. Request rejected.".FormatWith(
unescapedUri,
maxUrlLength,
unescapedUri.Length));
context.Response.StatusCode = 414;
context.Response.ReasonPhrase = "Request-URI Too Large";
context.Response.Write(context.Response.ReasonPhrase);
return Task.FromResult(0);
}
logger.Debug("Check passed. Request forwarded.");
return next(env);
};
}
示例3: MaxBandwidthGlobal
/// <summary>
/// Limits the bandwith used by the subsequent stages in the owin pipeline.
/// </summary>
/// <param name="getBytesPerSecond">
/// A delegate to retrieve the maximum number of bytes per second to be transferred.
/// Allows you to supply different values at runtime. Use 0 or a negative number to specify infinite bandwidth.
/// </param>
/// <param name="loggerName">(Optional) The name of the logger log messages are written to.</param>
/// <returns>An OWIN middleware delegate.</returns>
/// <exception cref="System.ArgumentNullException">getMaxBytesToWrite</exception>
public static MidFunc MaxBandwidthGlobal(Func<int> getBytesPerSecond, string loggerName = null)
{
getBytesPerSecond.MustNotNull("getMaxBytesToWrite");
loggerName = string.IsNullOrWhiteSpace(loggerName)
? "LimitsMiddleware.MaxBandwidthGlobal"
: loggerName;
var logger = LogProvider.GetLogger(loggerName);
var requestTokenBucket = new FixedTokenBucket(getBytesPerSecond);
var responseTokenBucket = new FixedTokenBucket(getBytesPerSecond);
logger.Debug("Configure streams to be globally limited to.");
return
next =>
async env =>
{
using (requestTokenBucket.RegisterRequest())
using (responseTokenBucket.RegisterRequest())
{
var context = new OwinContext(env);
Stream requestBodyStream = context.Request.Body ?? Stream.Null;
Stream responseBodyStream = context.Response.Body;
context.Request.Body = new ThrottledStream(requestBodyStream, requestTokenBucket);
context.Response.Body = new ThrottledStream(responseBodyStream, responseTokenBucket);
//TODO consider SendFile interception
await next(env).ConfigureAwait(false);
}
};
}
示例4: MinResponseDelay
/// <summary>
/// Adds a minimum delay before sending the response.
/// </summary>
/// <param name="getMinDelay">A delegate to return the min response delay.</param>
/// <returns>The OWIN builder instance.</returns>
/// <exception cref="System.ArgumentNullException">getMinDelay</exception>
public static MidFunc MinResponseDelay(Func<RequestContext, TimeSpan> getMinDelay)
{
getMinDelay.MustNotNull("getMinDelay");
var logger = LogProvider.GetLogger("LimitsMiddleware.MinResponseDelay");
return
next =>
async env =>
{
var context = new OwinContext(env);
var limitsRequestContext = new RequestContext(context.Request);
var delay = getMinDelay(limitsRequestContext);
if (delay <= TimeSpan.Zero)
{
await next(env);
return;
}
logger.Debug("Delaying response by {0}".FormatWith(delay));
await Task.Delay(delay, context.Request.CallCancelled);
await next(env);
};
}
示例5: MaxBandwidthPerRequest
/// <summary>
/// Limits the bandwith used by the subsequent stages in the owin pipeline.
/// </summary>
/// <param name="getMaxBytesPerSecond">
/// A delegate to retrieve the maximum number of bytes per second to be transferred.
/// Allows you to supply different values at runtime. Use 0 or a negative number to specify infinite bandwidth.
/// </param>
/// <returns>An OWIN middleware delegate.</returns>
/// <exception cref="System.ArgumentNullException">getMaxBytesPerSecond</exception>
public static MidFunc MaxBandwidthPerRequest(Func<RequestContext, int> getMaxBytesPerSecond)
{
getMaxBytesPerSecond.MustNotNull("getMaxBytesPerSecond");
return
next =>
async env =>
{
var context = new OwinContext(env);
Stream requestBodyStream = context.Request.Body ?? Stream.Null;
Stream responseBodyStream = context.Response.Body;
var limitsRequestContext = new RequestContext(context.Request);
var requestTokenBucket = new FixedTokenBucket(
() => getMaxBytesPerSecond(limitsRequestContext));
var responseTokenBucket = new FixedTokenBucket(
() => getMaxBytesPerSecond(limitsRequestContext));
using (requestTokenBucket.RegisterRequest())
using (responseTokenBucket.RegisterRequest())
{
context.Request.Body = new ThrottledStream(requestBodyStream, requestTokenBucket);
context.Response.Body = new ThrottledStream(responseBodyStream, responseTokenBucket);
//TODO consider SendFile interception
await next(env).ConfigureAwait(false);
}
};
}
示例6: ConnectionTimeout
/// <summary>
/// Timeouts the connection if there hasn't been an read activity on the request body stream or any
/// write activity on the response body stream.
/// </summary>
/// <param name="getTimeout">
/// A delegate to retrieve the timeout timespan. Allows you
/// to supply different values at runtime.
/// </param>
/// <param name="loggerName">(Optional) The name of the logger log messages are written to.</param>
/// <returns>An OWIN middleware delegate.</returns>
/// <exception cref="System.ArgumentNullException">getTimeout</exception>
public static MidFunc ConnectionTimeout(
Func<RequestContext, TimeSpan> getTimeout,
string loggerName = null)
{
getTimeout.MustNotNull("getTimeout");
loggerName = string.IsNullOrWhiteSpace(loggerName)
? "LimitsMiddleware.ConnectionTimeout"
: loggerName;
var logger = LogProvider.GetLogger(loggerName);
return
next =>
env =>
{
var context = new OwinContext(env);
var limitsRequestContext = new RequestContext(context.Request);
var requestBodyStream = context.Request.Body ?? Stream.Null;
var responseBodyStream = context.Response.Body;
var connectionTimeout = getTimeout(limitsRequestContext);
context.Request.Body = new TimeoutStream(requestBodyStream, connectionTimeout, logger);
context.Response.Body = new TimeoutStream(responseBodyStream, connectionTimeout, logger);
return next(env);
};
}
示例7: MaxUrlLength
/// <summary>
/// Limits the length of the URL.
/// </summary>
/// <param name="app">The IAppBuilder instance.</param>
/// <param name="getMaxUrlLength">A delegate to get the maximum URL length.</param>
/// <returns>The IAppBuilder instance.</returns>
public static IAppBuilder MaxUrlLength(this IAppBuilder app, Func<RequestContext, int> getMaxUrlLength)
{
app.MustNotNull("app");
getMaxUrlLength.MustNotNull("getMaxUrlLength");
app.Use(Limits.MaxUrlLength(getMaxUrlLength));
return app;
}
示例8: MaxBandwidthPerRequest
/// <summary>
/// Limits the bandwith used by the subsequent stages in the owin pipeline.
/// </summary>
/// <param name="getMaxBytesPerSecond">A delegate to retrieve the maximum number of bytes per second to be transferred.
/// Allows you to supply different values at runtime. Use 0 or a negative number to specify infinite bandwidth.</param>
/// <returns>An OWIN middleware delegate.</returns>
/// <param name="app">The IAppBuilder instance.</param>
/// <exception cref="System.ArgumentNullException">app</exception>
/// <exception cref="System.ArgumentNullException">getMaxBytesPerSecond</exception>
public static IAppBuilder MaxBandwidthPerRequest(this IAppBuilder app, Func<RequestContext, int> getMaxBytesPerSecond)
{
app.MustNotNull("app");
getMaxBytesPerSecond.MustNotNull("getMaxBytesPerSecond");
app.Use(Limits.MaxBandwidthPerRequest(getMaxBytesPerSecond));
return app;
}
示例9: MaxConcurrentRequests
/// <summary>
/// Limits the number of concurrent requests that can be handled used by the subsequent stages in the owin pipeline.
/// </summary>
/// <param name="getMaxConcurrentRequests">
/// A delegate to retrieve the maximum number of concurrent requests. Allows you
/// to supply different values at runtime. Use 0 or a negative number to specify unlimited number of concurrent
/// requests.
/// </param>
/// <param name="loggerName">(Optional) The name of the logger log messages are written to.</param>
/// <returns>An OWIN middleware delegate.</returns>
/// <exception cref="System.ArgumentNullException">getMaxConcurrentRequests</exception>
public static MidFunc MaxConcurrentRequests(
Func<int> getMaxConcurrentRequests,
string loggerName = null)
{
getMaxConcurrentRequests.MustNotNull("getMaxConcurrentRequests");
return MaxConcurrentRequests(_ => getMaxConcurrentRequests(), loggerName);
}
示例10: MaxUrlLength
/// <summary>
/// Limits the length of the URL.
/// </summary>
/// <param name="app">The IAppBuilder instance.</param>
/// <param name="getMaxUrlLength">A delegate to get the maximum URL length.</param>
/// <param name="loggerName">(Optional) The name of the logger log messages are written to.</param>
/// <returns>The IAppBuilder instance.</returns>
public static IAppBuilder MaxUrlLength(this IAppBuilder app, Func<int> getMaxUrlLength, string loggerName = null)
{
app.MustNotNull("app");
getMaxUrlLength.MustNotNull("getMaxUrlLength");
app.Use(Limits.MaxUrlLength(getMaxUrlLength, loggerName));
return app;
}
示例11: MaxQueryStringLength
/// <summary>
/// Limits the length of the query string.
/// </summary>
/// <param name="app">The IAppBuilder instance.</param>
/// <param name="getMaxQueryStringLength">A delegate to get the maximum query string length.</param>
/// <returns>The IAppBuilder instance.</returns>
public static IAppBuilder MaxQueryStringLength(this IAppBuilder app, Func<int> getMaxQueryStringLength)
{
app.MustNotNull("app");
getMaxQueryStringLength.MustNotNull("getMaxQueryStringLength");
app.Use(Limits.MaxQueryStringLength(getMaxQueryStringLength));
return app;
}
示例12: ConnectionTimeout
/// <summary>
/// Timeouts the connection if there hasn't been an read activity on the request body stream or any
/// write activity on the response body stream.
/// </summary>
/// <param name="app">The IAppBuilder instance.</param>
/// <param name="getTimeout">A delegate to retrieve the timeout timespan. Allows you
/// to supply different values at runtime.</param>
/// <returns>An OWIN middleware delegate.</returns>
/// <exception cref="System.ArgumentNullException">getTimeout</exception>
public static IAppBuilder ConnectionTimeout(this IAppBuilder app, Func<RequestContext, TimeSpan> getTimeout)
{
app.MustNotNull("app");
getTimeout.MustNotNull("getTimeout");
app.Use(Limits.ConnectionTimeout(getTimeout));
return app;
}
示例13: MaxConcurrentRequests
/// <summary>
/// Limits the number of concurrent requests that can be handled used by the subsequent stages in the owin pipeline.
/// </summary>
/// <param name="app">The IAppBuilder instance.</param>
/// <param name="getMaxConcurrentRequests">A delegate to retrieve the maximum number of concurrent requests. Allows you
/// to supply different values at runtime. Use 0 or a negative number to specify unlimited number of concurrent requests.</param>
/// <returns>The IAppBuilder instance.</returns>
public static IAppBuilder MaxConcurrentRequests(this IAppBuilder app, Func<RequestContext, int> getMaxConcurrentRequests)
{
app.MustNotNull("app");
getMaxConcurrentRequests.MustNotNull("getMaxConcurrentRequests");
app.Use(Limits.MaxConcurrentRequests(getMaxConcurrentRequests));
return app;
}
示例14: MaxQueryStringLength
/// <summary>
/// Limits the length of the query string.
/// </summary>
/// <param name="app">The IAppBuilder instance.</param>
/// <param name="getMaxQueryStringLength">A delegate to get the maximum query string length.</param>
/// <param name="loggerName">(Optional) The name of the logger log messages are written to.</param>
/// <returns>The IAppBuilder instance.</returns>
public static IAppBuilder MaxQueryStringLength(this IAppBuilder app,
Func<RequestContext, int> getMaxQueryStringLength, string loggerName = null)
{
app.MustNotNull("app");
getMaxQueryStringLength.MustNotNull("getMaxQueryStringLength");
app.Use(Limits.MaxQueryStringLength(getMaxQueryStringLength, loggerName));
return app;
}
示例15: ConnectionTimeout
/// <summary>
/// Timeouts the connection if there hasn't been an read activity on the request body stream or any
/// write activity on the response body stream.
/// </summary>
/// <param name="app">The IAppBuilder instance.</param>
/// <param name="getTimeout">
/// A delegate to retrieve the timeout timespan. Allows you
/// to supply different values at runtime.
/// </param>
/// <param name="loggerName">(Optional) The name of the logger log messages are written to.</param>
/// <returns>The IAppBuilder instance.</returns>
public static IAppBuilder ConnectionTimeout(this IAppBuilder app, Func<TimeSpan> getTimeout,
string loggerName = null)
{
app.MustNotNull("app");
getTimeout.MustNotNull("getTimeout");
app.Use(Limits.ConnectionTimeout(getTimeout, loggerName));
return app;
}