标签: self-hosting

使用asp.net属性路由的根路径的默认路由

我正在使用ASP.NET 5 RC中的属性路由,包含在Visual Studio 2013 RC版本中.

我想通过根路径,/导致规范/Home/Index路径,但我找不到一种方法只使用属性路由来做到这一点.是否有可能,如果不是,如果我也使用OWIN SelfHost,我将如何做?换句话说,我HttpConfigurationWebApp.Start<T>方法中手动设置我自己的类(其中T有一个Configure(IAppBuilder)在启动时调用的方法)而不是通过该RouteTable.Routes对象.或者我应该通过RouteTable.Routes对象?当我尝试时,我没有太多运气...

编辑:这是我到目前为止所尝试的:

// normal Web API attribute routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
   name: "DefaultWeb",
   routeTemplate: "{controller}/{action}",
   defaults: new { controller = "Home", action = "Index" }
);
Run Code Online (Sandbox Code Playgroud)

下面的第二次尝试看起来有点可疑,因为我的HttpConfiguration对象与静态RouteTable.Routes对象的关系并不清楚:

// normal Web API attribute routes
config.MapHttpAttributeRoutes();

RouteTable.Routes.MapRoute(
   name: "DefaultWeb",
   url: "{controller}/{action}",
   defaults: new { controller = "Home", action = "Index" }
);
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc self-hosting asp.net-mvc-routing owin visual-studio-2013

12
推荐指数
1
解决办法
9199
查看次数

使用Javascript客户端的WCF自托管WebSocket服务

我有这个WCF自托管的WebSocket服务代码:

主要:

//Create a URI to serve as the base address
Uri httpUrl = new Uri("http://192.168.1.95:8080/service");
//Create ServiceHost
ServiceHost host = new ServiceHost(typeof(WebSocketService), httpUrl);            
//Add a service endpoint
host.AddServiceEndpoint(typeof(IWebSocket), new NetHttpBinding(), "");
//Enable metadata exchange
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
host.Description.Behaviors.Add(smb);
//Start the Service
host.Open();

Console.WriteLine("Service is host at " + DateTime.Now.ToString());
Console.WriteLine("Host is running... Press <Enter> key to stop");
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

接口:

namespace IWebSocketHostTest
{
    [ServiceContract]
    interface IWebSocketCallBack
    {
        [OperationContract(IsOneWay = true)]
        void Send(int num);
    }

    [ServiceContract(CallbackContract …
Run Code Online (Sandbox Code Playgroud)

javascript c# wcf self-hosting websocket

12
推荐指数
1
解决办法
1万
查看次数

如果OWIN使用Ninject OWINHost自托管应用程序需要system.web吗?

我正在尝试使用Ninject创建一个带有OWIN自托管WebAPI的Windows服务.我得到了它的工作,但我不得不添加对system.web的引用,这似乎是错误的.没有对system.web的引用我得到了这些编译错误:

"System.Web.Routing.RouteCollection"类型在未引用的程序集中定义.您必须添加对程序集'System.Web,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.

类型'System.Web.Routing.Route'在未引用的程序集中定义.您必须添加对程序集'System.Web,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.

根据本文设置OWIN WebApi应用程序添加Ninject之后出现错误

我还必须将Microsoft.Owin限制为版本2.1.0,以便Ninject工作.在服务启动期间,Ninject正在寻找Owin 2.1.0.如果你得到最新的Microsoft.Owin它将滚动到3.0.

我正在使用的三个主要NuGet包是:

Microsoft.AspNet.WebApi.OwinSelfHost

Ninject.Web.Common.OwinHost

Ninject.Web.WebApi.OwinHost

这是我的所有包(请注意Microsoft.Owin上的约束)

  <package id="Microsoft.AspNet.WebApi" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Owin" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.OwinSelfHost" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.2" targetFramework="net45" />
  <package id="Microsoft.Owin" version="2.1.0" targetFramework="net45" allowedVersions="(,2.1]" />
  <package id="Microsoft.Owin.Host.HttpListener" version="3.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Hosting" version="2.0.2" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
  <package id="Ninject" version="3.2.2.0" …
Run Code Online (Sandbox Code Playgroud)

c# ninject self-hosting asp.net-web-api owin

12
推荐指数
1
解决办法
3030
查看次数

在自托管模式下获取当前的owin上下文

我需要运行我的应用程序,它在IIS和.NET CLR自主机模式下提供一些ASP.NET Web API服务.我开发了基于OWIN的ASP.NET Web API服务,它在两台主机上运行良好.现在我需要这样的东西:

public class OwinContextInfrastructure
    {
        public static IOwinContext Current
        {
            get
            {
                if (HttpContext.Current != null)
                {
                    return HttpContext.Current.GetOwinContext();
                }
                else
                {
                    // What should I do here ?
                    return null;
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中需要时获取当前的owin上下文.

我的代码在IIS上工作正常,但在.NET Self Host模式下我该怎么办?

.net asp.net iis self-hosting owin

12
推荐指数
2
解决办法
2万
查看次数

asp.net web api self hosting/owin/katana

关于自托管我有很多问题

自我托管Nuget

有2个nuget提供自托管:Microsoft.AspNet.WebApi.OwinSelfHost而且Microsoft.AspNet.WebApi.SelfHost,微软有2个实现自托管?或者他们是一样的?

Owin或Kitana

nuget的名字Microsoft.AspNet.WebApi.OwinSelfHost有OWIN,但据我所知,Owi​​n是一个接口而Kitana是一个实现,实现的nuget是什么名字?

在生产中托管

我已经设法通过创建一个控制台来运行该示例.但是在部署到prod时,如何部署?运行exe并继续运行控制台,不能这样做.如果有人关闭那个控制台怎么办?那么应该作为Windows服务的一部分托管?或者还有其他方法吗?

self-hosting asp.net-web-api owin katana

12
推荐指数
1
解决办法
4037
查看次数

ASP.net 5在Live Windows Server上自托管 - EACCES权限被拒绝了吗?

我的印象是,我们实际上可以在实时服务器上运行一个控制台应用程序,该应用程序可以监听和提供数据(如果是为了这个目的,则是网页).这样,我们就不必在IIS上托管我们的Web应用程序了.我一直认为这就是"在你自己的过程中托管网络应用程序"的意思.

这是我认为相关的project.json的一部分:

  "dependencies": {
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5010"
  },
Run Code Online (Sandbox Code Playgroud)

如果我转到命令提示符,dir到项目的根目录,然后运行dnx web,是的,确实,控制台应用程序正在运行,我可以转到我的浏览器并键入http:// localhost:5010并查看网站.

但是,当我将该URL更改为实际URL时(是的,我已经将DNS指向我的服务器以获取该URL),我将收到错误消息EACCES permission denied.

如果我们可以"自我托管"但只能使用localhost,这似乎只对本地开发有利.如果它不能用于实时/制作,为什么能够"在我自己的过程中自我托管"?

我需要做什么?我是否需要为特定文件夹设置一些权限?哪个用户/组,哪个权限,以及哪个文件夹?我在项目的根目录上尝试了IIS_IUSRS,当然,这不起作用,因为我还想绕过IIS.

任何帮助将不胜感激.

iis webserver self-hosting iis-8 asp.net-core

12
推荐指数
1
解决办法
6437
查看次数

将Web Api服务自托管到Windows窗体中

我试图使用下面的代码在Windows窗体应用程序中自我托管Web Api服务

namespace MascoteAquarium.Desktop
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            var config = new HttpSelfHostConfiguration("http://localhost:8080");
            config.Routes.MapHttpRoute(
                "DefaultApi", "api/{controller}/id", new { id = RouteParameter.Optional });

            using (HttpSelfHostServer server = new HttpSelfHostServer(config))
            {
                server.OpenAsync().Wait();
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmMainMenu());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试

http://localhost:8080/api/*(some-controller)* 
Run Code Online (Sandbox Code Playgroud)

我在System.Web.Http.SelfHost.HttpSelfHostServer.ProcessRequestContext(ChannelContext channelContext,RequestContext requestContext)收到NullReferenceException.

有人知道发生了什么事吗?是否有可能在Win Forms应用程序内自托管?

c# asp.net self-hosting winforms asp.net-web-api

11
推荐指数
2
解决办法
5627
查看次数

使用HttpServer或HttpSelfHostServer对Web API进行单元测试

我正在尝试为Web API项目进行一些单元测试.我要模拟web API托管环境.好像我可以使用内存主机(HttpServer)或自主机(HttpSelfHostServer).

只是想知道有什么区别,哪种技术对什么有好处,对这些选项有任何限制.

c# unit-testing self-hosting asp.net-web-api

11
推荐指数
1
解决办法
6825
查看次数

为什么我会得到"无法解析符号'CreatePerOwinContext'"?

我有一个自我托管的Owin Web Api,我正在尝试使用每个Owin请求的EF Context的单个实例.这是我的启动类的配置代码.

public void Configuration(IAppBuilder app)
{         
    app.CreatePerOwinContext(A3Context.Create);
}
Run Code Online (Sandbox Code Playgroud)

这不会构建,因为我收到以下错误.

错误

5'Enterin.IAppBuilder'不包含'CreatePerOwinContext'的定义,并且没有扩展方法'CreatePerOwinContext'接受类型'Owin.IAppBuilder'的第一个参数'(你是否缺少using指令或汇编引用?)

我错过了一个我不知道的参考文献?

c# asp.net self-hosting owin

10
推荐指数
1
解决办法
5363
查看次数

如何将参数传递给排队后台任务(.NET Core)

在我的网络应用程序中,我对长时间运行的任务执行操作,并且我想在后台调用此任务。因此,根据文档 .NET Core 3.1排队后台任务,我使用这样的代码:

public interface IBackgroundTaskQueue
{
    ValueTask QueueBackgroundWorkItemAsync(Func<CancellationToken, ValueTask> workItem);

    ValueTask<Func<CancellationToken, ValueTask>> DequeueAsync(CancellationToken cancellationToken);
}

public class BackgroundTaskQueue : IBackgroundTaskQueue
{
    private readonly Channel<Func<CancellationToken, ValueTask>> _queue;

    public BackgroundTaskQueue(int capacity)
    {
        var options = new BoundedChannelOptions(capacity){FullMode = BoundedChannelFullMode.Wait};
        _queue = Channel.CreateBounded<Func<CancellationToken, ValueTask>>(options);
    }

    public async ValueTask QueueBackgroundWorkItemAsync(Func<CancellationToken, ValueTask> workItem)
    {
        if (workItem == null)throw new ArgumentNullException(nameof(workItem));
        await _queue.Writer.WriteAsync(workItem);
    }

    public async ValueTask<Func<CancellationToken, ValueTask>> DequeueAsync(CancellationToken cancellationToken)
    {
        var workItem = await _queue.Reader.ReadAsync(cancellationToken);
        return workItem;
    }
}
Run Code Online (Sandbox Code Playgroud)

和托管服务

public …
Run Code Online (Sandbox Code Playgroud)

.net self-hosting background-process .net-core

10
推荐指数
1
解决办法
4168
查看次数