2015-04-29 2 views
15

It is possible для запуска приложения suave.io на Azure Web Apps из-за функции IIS8 под названием HttpPlatformHandler. Я попытался запустить самопринятый Owin приложение таким же образом, но есть исключение при запуске:Запустить самообслуживаемое приложение OWIN в Azure Web Apps

Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Net.HttpListenerException: Access is denied 
    at System.Net.HttpListener.SetupV2Config() 
    at System.Net.HttpListener.Start() 
    at Microsoft.Owin.Host.HttpListener.OwinHttpListener.Start(HttpListener listener, Func`2 appFunc, IList`1 addresses, IDictionary`2 capabilities, Func`2 loggerFactory) 
    at Microsoft.Owin.Host.HttpListener.OwinServerFactory.Create(Func`2 app, IDictionary`2 properties) 
    --- End of inner exception stack trace --- 
    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 
    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 
    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 
    at Microsoft.Owin.Hosting.ServerFactory.ServerFactoryAdapter.Create(IAppBuilder builder) 
    at Microsoft.Owin.Hosting.Engine.HostingEngine.StartServer(StartContext context) 
    at Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext context) 
    at Microsoft.Owin.Hosting.Starter.DirectHostingStarter.Start(StartOptions options) 
    at Microsoft.Owin.Hosting.Starter.HostingStarter.Start(StartOptions options) 
    at Microsoft.Owin.Hosting.WebApp.StartImplementation(IServiceProvider services, StartOptions options) 
    at Microsoft.Owin.Hosting.WebApp.Start(StartOptions options) 
    at Microsoft.Owin.Hosting.WebApp.Start[TStartup](StartOptions options) 
    at Microsoft.Owin.Hosting.WebApp.Start[TStartup](String url) 
    at WebAppSample.Program.Main(String[] args) in c:\Users\egger\Workspace\WebAppSample\WebAppSample\Program.cs:line 14 

Это кажется, что я не позволил открыть порт. Моя web.config выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <handlers> 
      <remove name="httpplatformhandler" /> 
      <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" /> 
     </handlers> 
     <httpPlatform 
      stdoutLogEnabled="true" 
      stdoutLogFile="site.log" 
      startupTimeLimit="20" 
      processPath="%HOME%\site\wwwroot\WebAppSample.exe" 
      arguments="%HTTP_PLATFORM_PORT%"> 
     </httpPlatform> 
    </system.webServer> 
</configuration> 

Я использую HTTP_PLATFORM_PORT слушать на нужный порт. Мой веб-приложение запускает сервер следующим образом:

class Program 
{ 
    static void Main(string[] args) 
    { 
     var port = int.Parse(args[0]); 
     var url = string.Format("http://127.0.0.1:{0}", port); 
     Console.WriteLine("Starting web app at {0}", url); 
     using (WebApp.Start<Startup>(url)) 
     { 
      Console.ReadLine(); 
     } 
    } 
} 
public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.UseErrorPage(); 
     app.UseWelcomePage("/"); 
    } 
} 

URL, кажется, будет хорошо, потому что я получаю такой вывод: Starting web app at http://127.0.0.1:32880.

Web.config и все двоичные файлы находятся в корневом каталоге, и я опубликовал приложение, используя локальное репозиторий git.

Почему я не могу открыть порт, используя OWIN? Что отличается от образца suave.io?

EDIT: Я только что видел есть запрос, чтобы поддержать именно этот сценарий: https://feedback.azure.com/forums/169385-web-apps-formerly-websites/suggestions/4606121-support-owin-self-hosting-in-azure-websites

+0

Возможно, здесь молчит из-за // сборки конференции. Я буду терпелив еще несколько дней :-) –

+0

Вы когда-нибудь находили ответ для этого? Я развертываю довольно много приложений и сервисов F #, используя трюк HttpPlatformHandler, но пытаюсь встать и работать с сервером signalr, используя OWIN и F #, и ничего не работает. – tigerswithguitars

+0

Мы больше никогда не пробовали. Приложение в настоящее время работает в роли рабочего. –

ответ

5

Я была такая же проблема. Решено просто запустить Visual Studio в качестве администратора.

(Возможно, вам потребуется перезапустить Лазурный эмулятор)

+1

Я не пытаюсь запустить приложение в эмуляторе. Я развернул его прямо на Azure. –

+0

Бро - ты просто спас мне жизнь. –

Смежные вопросы