मैं एचआईटीपीप्लाफ्टर हैंडलर (संस्करण 1.2) का उपयोग कर आईआईएस (आईआईएस 10.0) में चल रहे मूल सुवे एप्लिकेशन को प्राप्त करने का प्रयास कर रहा हूं।एचईटीपीप्लाफ्टर हैंडलर कनेक्शन के साथ आईआईएस पर होस्ट किए गए सुवे ऐप कनेक्शन
जब मैं यह एक एकल WebPart ऐसी वापसी के रूप में
(OK "Hello World")
आवेदन आईआईएस ठीक में चलता है और मैं http://localhost/testapp पर नाम से यह करने के लिए अनुरोध कर सकते हैं (TestApp डिफ़ॉल्ट वेब के तहत आवेदन का नाम है साइट)।
हालांकि, अगर मैं WebPart जैसे
let app =
choose
[ GET >=> choose
[ path "/hello" >=> OK "Hello GET"
path "/goodbye" >=> OK "Good bye GET" ]
POST >=> choose
[ path "/hello" >=> OK "Hello POST"
path "/goodbye" >=> OK "Good bye POST" ] ]
के लिए कुछ और अधिक जटिल का उपयोग वेबसाइट शुरू होता है, लेकिन मैं आवेदन नाम से यह नहीं पहुँच सकते हैं। हालांकि मैं अभी भी बंदरगाह तक पहुंचने में सक्षम हूं।
जब मैंने नाम से एप्लिकेशन को मारा तो मुझे HTTP 503.2 (खराब गेटवे) प्रतिक्रिया प्राप्त होती है।
एप्लिकेशन HttpPlatformHandler द्वारा निष्पादित एक FAKE स्क्रिप्ट से शुरू किया गया है।
संदर्भ के लिए, यह नकली स्क्रिप्ट जो आवेदन शुरू होता है:
#r "./tools/FakeLib.dll"
#r "Suave.dll"
open System
open Suave
open Suave.Successful
open Fake
open System.Net
open Suave.Filters
open Suave.Sockets
open Suave.Operators
open System.IO
Environment.CurrentDirectory <- __SOURCE_DIRECTORY__
let port = Sockets.Port.Parse <| getBuildParamOrDefault "port" "8083"
let serverConfig =
{ defaultConfig with
logger = Logging.Loggers.saneDefaultsFor Logging.LogLevel.Verbose
bindings = [ HttpBinding.mk HTTP IPAddress.Loopback port ]
}
let app =
choose
[ GET >=> choose
[ path "/hello" >=> OK "Hello GET"
path "/goodbye" >=> OK "Good bye GET" ]
POST >=> choose
[ path "/hello" >=> OK "Hello POST"
path "/goodbye" >=> OK "Good bye POST" ] ]
startWebServer serverConfig (OK "Hello")
//startWebServer serverConfig app
ऊपर स्क्रिप्ट की उम्मीद के रूप में काम करता है। हालांकि अगर मैं (OK "Hello")
के बजाय app
WebPart
का उपयोग करता हूं तो मुझे ऊपर वर्णित समस्या का सामना करना पड़ता है।
पूर्णता यहाँ के लिए web.config HttpPlatformHandler के लिए स्थापित है:
<?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" startupTimeLimit="20"
processPath=".\tools\FAKE.exe"
arguments=".\test.fsx port=%HTTP_PLATFORM_PORT%" >
<environmentVariables>
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
मैं लॉग की समीक्षा की है, लेकिन दुर्भाग्य से मैं कुछ भी है कि एक त्रुटि दर्शाता है नहीं देख सकता।
मैं ईवेंट व्यूअर देख लिया है, और केवल सुराग कुछ गलत हो सकता है कि आवेदन लॉग में इस जानकारी घटना है:
The description for Event ID 1001 from source HttpPlatformHandler cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.
यहाँ जहां ऐप मामले से लॉग के एक हिस्से को है के रूप में (choose
के बिना) की उम्मीद चलता है:
[V] 2016-01-19T02:43:40.6932823Z: initialising BufferManager with 827392 bytes [Suave.Socket.BufferManager]
[I] 2016-01-19T02:43:40.7114149Z: listener started in 20.885 ms with binding 127.0.0.1:18450 [Suave.Tcp.tcpIpServer]
[V] 2016-01-19T02:43:40.8146603Z: 127.0.0.1 connected, total: 1 clients [Suave.Tcp.job]
[V] 2016-01-19T02:43:40.8166665Z: reserving buffer: 811008, free count: 99 [Suave.Tcp.job] [Suave.Socket.BufferManager]
[V] 2016-01-19T02:43:40.8217965Z: -> processor [Suave.Web.httpLoop.loop]
[V] 2016-01-19T02:43:40.8228181Z: reading first line of request [Suave.Web.processRequest]
[V] 2016-01-19T02:43:40.8378128Z: reserving buffer: 802816, free count: 98 [Suave.Web.readMoreData] [Suave.Socket.BufferManager]
[V] 2016-01-19T02:43:40.8498033Z: reading headers [Suave.Web.processRequest]
[V] 2016-01-19T02:43:40.8776578Z: freeing buffer: 802816, free count: 99 [Suave.Web.split] [Suave.Socket.BufferManager]
[V] 2016-01-19T02:43:40.8866594Z: parsing post data [Suave.Web.processRequest]
[V] 2016-01-19T02:43:40.8886553Z: <- processor [Suave.Web.httpLoop.loop]
[V] 2016-01-19T02:43:40.9057610Z: 'Connection: keep-alive' recurse [Suave.Web.httpLoop.loop]
[V] 2016-01-19T02:43:40.9057610Z: -> processor [Suave.Web.httpLoop.loop]
[V] 2016-01-19T02:43:40.9057610Z: reading first line of request [Suave.Web.processRequest]
[V] 2016-01-19T02:43:40.9057610Z: reserving buffer: 802816, free count: 98 [Suave.Web.readMoreData] [Suave.Socket.BufferManager]
[V] 2016-01-19T02:43:45.2531307Z: reading headers [Suave.Web.processRequest]
[V] 2016-01-19T02:43:45.2541141Z: freeing buffer: 802816, free count: 99 [Suave.Web.split] [Suave.Socket.BufferManager]
[V] 2016-01-19T02:43:45.2541141Z: parsing post data [Suave.Web.processRequest]
[V] 2016-01-19T02:43:45.2541141Z: <- processor [Suave.Web.httpLoop.loop]
[V] 2016-01-19T02:43:45.2551164Z: 'Connection: keep-alive' recurse [Suave.Web.httpLoop.loop]
और यहाँ लॉग के एक हिस्से को जहां एप्लिकेशन (choose
के माध्यम से मार्ग के साथ) अपेक्षा के अनुरूप काम नहीं करता है:
[V] 2016-01-19T02:44:59.6356127Z: initialising BufferManager with 827392 bytes [Suave.Socket.BufferManager]
[I] 2016-01-19T02:44:59.6537478Z: listener started in 20.987 ms with binding 127.0.0.1:18708 [Suave.Tcp.tcpIpServer]
[V] 2016-01-19T02:44:59.8848907Z: 127.0.0.1 connected, total: 1 clients [Suave.Tcp.job]
[V] 2016-01-19T02:44:59.8879891Z: reserving buffer: 811008, free count: 99 [Suave.Tcp.job] [Suave.Socket.BufferManager]
[V] 2016-01-19T02:44:59.8929862Z: -> processor [Suave.Web.httpLoop.loop]
[V] 2016-01-19T02:44:59.8939749Z: reading first line of request [Suave.Web.processRequest]
[V] 2016-01-19T02:44:59.9068548Z: reserving buffer: 802816, free count: 98 [Suave.Web.readMoreData] [Suave.Socket.BufferManager]
[V] 2016-01-19T02:44:59.9209857Z: reading headers [Suave.Web.processRequest]
[V] 2016-01-19T02:44:59.9259688Z: freeing buffer: 802816, free count: 99 [Suave.Web.split] [Suave.Socket.BufferManager]
[V] 2016-01-19T02:44:59.9338521Z: parsing post data [Suave.Web.processRequest]
[V] 2016-01-19T02:44:59.9378580Z: <- processor [Suave.Web.httpLoop.loop]
[V] 2016-01-19T02:44:59.9518518Z: freeing buffer: 811008, free count: 100 [Suave.Tcp.job] [Suave.Socket.BufferManager]
[V] 2016-01-19T02:44:59.9518518Z: Shutting down transport. [Suave.Tcp.job]
[V] 2016-01-19T02:44:59.9528516Z: 127.0.0.1 disconnected, total: 0 clients [Suave.Tcp.job]
जब ऐप कनेक्शन निष्पादित करता है तो खुलता है और फिर तुरंत बंद हो जाता है। जब मैंने पोर्ट द्वारा ऐप मारा तो एक नया कनेक्शन खुलता है और फिर तुरंत बंद हो जाता है (फिर से)।
क्या मैं ऐप के लिए होस्ट कॉन्फ़िगरेशन के साथ कुछ गलत कर रहा हूं, या क्या मैं कुछ चुन रहा हूं कि मैं चुनिंदा फ़ंक्शन का उपयोग कैसे कर रहा हूं? किसी भी सहायता की सराहना की जाएगी। धन्यवाद!
आप डिबगर संलग्न करने की कोशिश की? क्या कोई अपवाद है? क्या होगा यदि आप किसी फ़ाइल या कुछ ऐसे में Suave लॉग को रीडायरेक्ट करते हैं, तो क्या यह कुछ भी दिखाता है? –
जवाब देने (और पूछने) के लिए धन्यवाद। मैं इसे चलाने के बाद FAKE.exe से संलग्न कर सकता हूं लेकिन मैं इसे लॉन्च करने से पहले ऐसा करने में सक्षम नहीं हूं। मैं अपवाद का पता लगाने में सक्षम नहीं हूं। मैंने लॉग आउटपुट को शामिल करने के लिए प्रश्न संपादित किया। – Jeremy
तो क्या आप किसी अपवाद को देखते हैं यदि आप प्रक्रिया शुरू करने के बाद संलग्न करते हैं? –