Part of URL with # is anchor. Anchors are only visible on the client side. You need to deal with anchors on client side with for example JavaScript and You can transform Your request to proper URL readable on server side.
This is not Asp.Net or C# specific. It is standard behavior for any server technology.
Just to quote standard RFC1808:
Note that the fragment identifier (and the "#" that precedes it) is not considered part of the URL.
Update:
If You want to send some data from Your swf to server You can write web service on the server side and then swf can communicate with this web service, so You can send whatever data You like.
Client side JavaScript would be fine to send URL to web service as well.
Edit:
Mate You got plenty of requests already:
81 requests ❘ 1.37MB transferred ❘ 24.10s (onload: 2.41s, DOMContentLoaded: 2.17s)
, so sending few bytes with asynchronous request would not make any difference I think.
Besides I do not think there is much You can do. Anchor is entirely client side thing, it's NOT part of the URL, and to deal with it You need to process on the client side and to process on the client side You need to load Your client script from server, end of story.
There is socket communitacion avaliable in Flash, but it's overdo and You mentioned that You have no access to swf code.
Really I can see no reason to change what You have and no good alternative as well.