Jag använder HttpWebRequest för att hämta en sida ifrån en annan webbplats. Det fungerar fint när webbplatsen ligger på en extern server (IIS 6) eller på min dator (IIS 5.1), men om den ligger på en server i samma nätverk (IIS 6) så får jag felmeddelandet "The remote server returned an error: (401) Unauthorized.". Det blir samma oavsett om sidan som försöker hämta sidan körs på min dator eller på servern. i asp.net är det per default inte tillåtet att posta till en annan sida utan man skall posta till sig själv för att inte kunna störa säkerheten med cross posting. Nej, nu missuppfattar du mig. Jag postar inte något formulär alls. Varken sidan som jag hämtar eller sidan som hämtar den har något formulär över huvud taget. Ja helt klart ett missförstånd. Kolla på http://blogs.msdn.com/adarshk/articles/category/8653.aspx och se om detta kan vara något. Kolla även denna diskussion http://www.dotnet247.com/247reference/msgs/45/227073.aspx rörande credentials som skall skickas med före anropet om du kör windows authentication. Tack för tipsen. Den andra länken gav en del insikt i hur autentiseringen fungerar. Dock så vill jag ju inte köra requesten som någon viss användare, utan jag vill köra den helt anonymt, precis som en request till en server någon helt annan stans. Vad händer om du på din pc i nätet surfar till servern, får du någon inloggning då? Vad står i din web.config -fil, kör du windows authentication med impersonation=true där eller. Det går fint att surfa till sidan. Det är bara när man använder HttpWebRequest som det blir fel. Lägg bara upp kontot som det hade varit vilken användare som helst och ge samma rättigheter som IUSR_xxx. HttpWebRequest till samma server
Jag har testat två olika webbplatser på servern, och de ger samma fel. Jag har satt anonym access på webbplatserna, och det går fint att surfa direkt till sidorna, både från min sida och från samma server. Både IUSR-kontot och IIS_WPG-kontot har rättighet till mapparna.
Går det att konfigurera webbplatsen så att det går att använda HttpWebRequest mot den i samma nätverk?Sv: HttpWebRequest till samma server
Det du kan göra är att ta bort runat="server" i form-taggen. Då kommer systemet tillåta detta, ex:
<form name="myFirstPage" action="SecondPage.aspx" method="post">
Hoppas det hjälper och ger dig möjlighet att arbeta vidare.
Ps. I 2.0 finns en ny funktion som gör det möjligt att cross-posta som då går att ställa om i web.configSv:HttpWebRequest till samma server
Jag använder HttpWebRequest för att hämta sidan, det är alltså en vanlig request med metoden GET.Sv: HttpWebRequest till samma server
Sv:HttpWebRequest till samma server
Servern är även domänkontrollant. Jag misstänker att det kan ha någonting att göra med att surfa till den. Är det någon speciell inställning man behöver göra för att kunna surfa anonymt till en sida även fast man är i samma nätverk?Sv: HttpWebRequest till samma server
Du kan testa att lägga upp kontot ASPNET som användare på den webbservern och tilldela den samma rättigheter som guest och se om det blir någon skillnad.
Det här skall egentligen inte vara någon problem så jag är lite förbryllad att det strular. Får du inga felmeddelanden du kan presentera?Sv:HttpWebRequest till samma server
Ifall jag ska lägga upp kontot ASPNET på server, ska jag importera det på något vis ifrån min dator, eller räcker det att kontot har samma namn?
Ifall jag låter bli att fånga felet så får jag ut det som ett felmeddelande som ser ut så här:
<code>Server Error in '/TranslateAdmin' Application.
--------------------------------------------------------------------------------
The remote server returned an error: (401) Unauthorized.
Description: An unhandled exception occurred during the execution of the current web request.
Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Net.WebException: The remote server returned an error: (401) Unauthorized.
Source Error:
An unhandled exception was generated during the execution of the current web request.
Information regarding the origin and location of the exception can be identified using the
exception stack trace below.
Stack Trace:
[WebException: The remote server returned an error: (401) Unauthorized.]
System.Net.HttpWebRequest.CheckFinalStatus() +678
System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) +139
System.Net.HttpWebRequest.GetResponse() +248
Bilock.Web.Http.Get(Uri url, Int32 timeout)
TranslateAdmin.LocationInfoPage.Page_Load(Object sender, EventArgs e) +155
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +750
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.2032; ASP.NET Version:1.1.4322.2032</code>Sv: HttpWebRequest till samma server
401 betyder helt klart att den försöker logga in på något sätt men inte får fulla rättigheter. Vad händer om du surfar hemifrån eller utanför domänen, kommer inloggning då?
Prova att inte logga in på domänen och surfa, se vad som händer.