पर विफल हो जाती है, मैं नए माइक्रोसॉफ्ट.एस्पनेट.एबएपीआई। सेलहोस्ट नुगेट पैकेज का उपयोग करके एक एज़ूर वर्कर भूमिका पर एएसपी.NET वेबएपी एंडपॉइंट होस्ट करने की कोशिश कर रहा हूं। मेरे कार्यकर्ता रन() कोड इस तरह मोटे तौर पर दिखता है:एएसपी.नेट वेबएपी सेल्फहोस्ट सेवा HTTP यूआरएल पंजीकरण
// Endpoint is defined as in ServiceDefinition.csdef as
// HTTP, external port 8080, internal port 8080 (or 8081 - error both ways)
RoleInstanceEndpoint externalEndPoint =
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint"];
string baseAddress= String.Format("http://{0}", externalEndPoint.IPEndpoint);
var maxsize = 1024 * 1024;
var config = new HttpSelfHostConfiguration(baseAddress)
{
MaxBufferSize = maxsize, MaxReceivedMessageSize = maxsize
};
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Create and open the server
var server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();
// keep the worker thread alive
while (true)
Thread.Sleep(Timeout);
यह देव कपड़े में ठीक काम करता है, लेकिन जब Azure करने के लिए की तैनाती, मैं server.OpenAsync() कॉल से एक AggregateException मिल निम्न अपवादों के ढेर से युक्त :
[0] One or more errors occurred.
[1] HTTP could not register URL http://+:8081/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).
[2] Access is denied
मैं सिर्फ एक वेनिला कार्यकर्ता भूमिका चल रहा हूँ और इस आत्म मेजबान के "हैलो दुनिया" हो रहा है ... मेरी ServiceDefinition.csdef की
endpoint हिस्सा इस तरह दिखता है:
<Endpoints>
<InputEndpoint name="Endpoint" protocol="http" port="8080" localPort="8081" />
</Endpoints>
baseAddress कि मैं RoleEnvironment InstanceEndpoint से प्राप्त कानूनी लग रहा है - http:।। //10.115 [X] [Y]: 8081
मैं विफलता देखते हैं कि क्या मैं एक ही बंदरगाह/localPort (8080 का उपयोग) या जब मैं उपरोक्त की तरह मैपिंग करता हूं।
यह स्पष्ट है कि इस तरह से एक कार्यकर्ता भूमिका में पारंपरिक डब्ल्यूसीएफ सेवा की मेजबानी करना संभव है - क्या कोई कारण है कि एएसपी.नेट वेबएपी सेल्फहोस्ट इस कॉन्फ़िगरेशन में काम नहीं करेगा?
हे रयान - बहुत धन्यवाद! मुझे लगा कि यह कुछ अनुमति देने वाला मुद्दा था। # 1 एक बहुत बड़ा हथौड़ा है ... अगर मुझे करने की ज़रूरत है तो मैं इसे करूँगा, लेकिन मैं कुछ और सर्जिकल करने की उम्मीद कर रहा था ... जैसे कि एक उन्नत स्टार्टअप स्क्रिप्ट में नेट नेट्स चलाएं - जैसे "netsh.exe http add urlacl url = "http: // +: 8080" लेकिन मुझे किसी उपयोगकर्ता को अनुमति देने की आवश्यकता है, और मुझे वास्तव में उस खाते का नाम/एसआईडी नहीं पता है जो Azure कार्यकर्ता भूमिका निभाएगा ... क्या कोई है इसे खोजने का तरीका, या netsh.exe को ऐसे तरीके से चलाने के लिए जो सभी उपयोगकर्ताओं को उस पोर्ट पर पहुंच की इजाजत देता है? –
हम्म ... अब जब मैं नज़दीक दिखता हूं, मुझे लगता है कि ऐसा इसलिए है क्योंकि आप वाइल्डकार्ड आरक्षण कर रहे हैं। अगर आप सटीक आईपी पते और बंदरगाह को लक्षित करने के लिए बस कोड को अपडेट किया गया, मुझे लगता है कि आप अनुमति की समस्या के आसपास हो सकते हैं। आईआईआरसी, यह केवल वाइल्डकार्ड आरक्षण है जिसे एसीएल तक बढ़ाया जाना चाहिए। अद्यतन उत्तर देखें – dunnry
जब मैं " baseAddress "उपरोक्त कोड में, यह इस तरह से बाहर आता है: http://10.115.210.79:8080। तो मैं वास्तव में एक सटीक मिलान का उपयोग कर रहा हूं ... इसके अलावा, अजीब चीज है कि अगर मैं स्टार्टअप स्क्रिप्ट में एक पंक्ति जोड़ता हूं जो "netsh.exe http urlacl url =" http: // +: 8080 "उपयोगकर्ता = हर कोई" करता है, और सत्यापित करता है कि यह सही तरीके से निष्पादित करता है (और अनुमतियां सही होती हैं मैं एक "नेटस् http httplll शो" करता हूं), मैं * अभी भी एक ही त्रुटि प्राप्त करता हूं। –